如何在javascript中将日期转换为日期?

mcr*_*eau 21 javascript date

我想花一年中的一天并使用Date对象转换为实际日期.例如:1929年第257天,我该怎么办呢?

CMS*_*CMS 48

"我想在一年中的某一天使用Date对象转换为实际日期."

重新阅读你的问题之后,听起来你有一个年号和一个任意的一天数(例如一个数字0..365(或闰年的366)),你想要从中得到一个日期.

例如:

dateFromDay(2010, 301); // "Thu Oct 28 2010", today ;)
dateFromDay(2010, 365); // "Fri Dec 31 2010"
Run Code Online (Sandbox Code Playgroud)

如果是这样,可以轻松完成:

function dateFromDay(year, day){
  var date = new Date(year, 0); // initialize a date in `year-01-01`
  return new Date(date.setDate(day)); // add the number of days
}
Run Code Online (Sandbox Code Playgroud)

您还可以添加一些验证,以确保日期编号与所提供的年份的天数范围相符.

  • 甚至更短:`返回新的Date(year,0,day)`。;-) (2认同)

Ste*_*han 8

最短的方法是创建一个新的日期对象,其中给定年份、一月作为月份、一年中的某一天作为日期:

const date = new Date(2017, 0, 365);

console.log(date.toLocaleDateString());
Run Code Online (Sandbox Code Playgroud)

如果setDate给定的日期大于月份的长度,则计算正确的月份。


ken*_*bec 5

//你可能需要它的两个部分 -

Date.fromDayofYear= function(n, y){
    if(!y) y= new Date().getFullYear();
    var d= new Date(y, 0, 1);
    return new Date(d.setMonth(0, n));
}
Date.prototype.dayofYear= function(){
    var d= new Date(this.getFullYear(), 0, 0);
    return Math.floor((this-d)/8.64e+7);
}

var d=new Date().dayofYear();
//
alert('day#'+d+' is '+Date.fromDayofYear(d).toLocaleDateString())


/*  returned value: (String)
day#301 is Thursday, October 28, 2010
*/
Run Code Online (Sandbox Code Playgroud)


med*_*116 5

这是一个采用日期编号的函数,并返回日期对象

可选地,参数2的YYYY格式需要一年.如果将其关闭,则默认为当前年份.

var getDateFromDayNum = function(dayNum, year){

    var date = new Date();
    if(year){
        date.setFullYear(year);
    }
    date.setMonth(0);
    date.setDate(0);
    var timeOfFirst = date.getTime(); // this is the time in milliseconds of 1/1/YYYY
    var dayMilli = 1000 * 60 * 60 * 24;
    var dayNumMilli = dayNum * dayMilli;
    date.setTime(timeOfFirst + dayNumMilli);
    return date;
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

// OUTPUT OF DAY 232 of year 1995

var pastDate = getDateFromDayNum(232,1995)
console.log("PAST DATE: " , pastDate);
Run Code Online (Sandbox Code Playgroud)

过去日期:1995年8月20日星期日09:47:18 GMT-0400(美国东部时间)