Javascript如何用零时间解析年份字符串到日期

时间:2016-01-19 15:29:47

标签: javascript date datetime momentjs

我想将'2015'字符串解析为Date

问题是因冬季时间和时区而调整一小时。 有可能得到:

当我Fri Jan 01 2010 00:00:00new Date("2010")

时,

moment("2010")

以下情况:

Fri Jan 01 2010 01:00:00 GMT+0100 (W. Europe Standard Time)

我希望时间总是00:00

修改

未提及:在我的情况下,我不知道我以哪种格式获取日期字符串。它可以是yearyear monthyear month day hours等。我要问的是如何格式化字符串到目前为止,所有未知值都是:01 for days and months,{{1 }}。

3 个答案:

答案 0 :(得分:2)

您可以在Date构造函数中设置此信息,如下所示:

new Date(2010, 0); // params: year, month

或者如果您需要从字符串创建日期:

var year = "2010";
new Date(parseInt(year), 0);
new Date(year + "-01-01");

答案 1 :(得分:1)

使用moment,您可以:

moment("2015", "YYYY");
// 2015-01-01T00:00:00+01:00

如果您需要使用当地时间,如果您想使用utc,则可以:

moment.utc("2015", "YYYY");
// 2015-01-01T00:00:00+00:00
评论后

编辑

您可以使用格式数组来使用moment parsing

var s = "2015";
moment(s, ["YYYY", "YYYY MMMM"]);     // 2015-01-01T00:00:00+01:00
moment.utc(s, ["YYYY", "YYYY MMMM"]); // 2015-01-01T00:00:00+00:00
s = "2010 February";
moment(s, ["YYYY", "YYYY MMMM"]);     // 2010-02-01T00:00:00+01:00
moment.utc(s, ["YYYY", "YYYY MMMM"]); // 2010-02-01T00:00:00+00:00

编辑#2 使用moment,您可以使用:

moment(s, ["YYYY MM DD HH:mm:ss", "YYYY MMMM DD HH:mm:ss"]);

例如:

function testMoment(s){
  var d = moment(s, ["YYYY MM DD HH:mm:ss", "YYYY MMMM DD HH:mm:ss"]);
  console.log( d.format() );
}

testMoment("2010");             // 2010-01-01T00:00:00+01:00
testMoment("2010 02");          // 2010-02-01T00:00:00+01:00
testMoment("2010 Feb");         // 2010-02-01T00:00:00+01:00
testMoment("2010 February");    // 2010-02-01T00:00:00+01:00
testMoment("2010 02 03");       // 2010-02-02T00:00:00+01:00
testMoment("2010 Feb 03");      // 2010-02-03T00:00:00+01:00
testMoment("2010 Feb 3");       // 2010-02-03T00:00:00+01:00
testMoment("2010 February 03"); // 2010-02-03T00:00:00+01:00
testMoment("2010 February 3");  // 2010-02-03T00:00:00+01:00
testMoment("2010 02 03 04");    // 2010-02-03T04:00:00+01:00
// etc...

答案 2 :(得分:0)

您可以为此创建一个包装器。

注意:当您执行new Date()时,您也会获得time,但是如果完成new Date(yyyy,mm,dd),则不会添加任何时间,时间总是00:00:00



function createYearStartDate(year){
  return new Date(year, 0,1);
}

(function(){
  var d1 = createYearStartDate("2010")
  console.log(d1)
})()