OK, this is basically a Javascript version of How can I convert a decimal year value into a Date in Ruby? and not exactly a duplicate of Javascript function to convert decimal years value into years, months and days
Input:
2015.0596924
Desired output:
January 22, 2015
I have solved it (see below), but I expect (just like the Ruby version of this question) that there is a better way.
The other solution would be:
date
for given year (integer part)In script:
function leapYear(year) {
return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
};
function convertDecimalDate(decimalDate) {
var year = parseInt(decimalDate);
var reminder = decimalDate - year;
var daysPerYear = leapYear(year) ? 366 : 365;
var miliseconds = reminder * daysPerYear * 24 * 60 * 60 * 1000;
var yearDate = new Date(year, 0, 1);
return new Date(yearDate.getTime() + miliseconds);
}
var date = convertDecimalDate(2015.0596924);
console.log(date);
You can play with it on this Fiddle.