我想将'2015'
字符串解析为Date
问题是因冬季时间和时区而调整一小时。 有可能得到:
当我Fri Jan 01 2010 00:00:00
或new Date("2010")
时, moment("2010")
以下情况:
Fri Jan 01 2010 01:00:00 GMT+0100 (W. Europe Standard Time)
我希望时间总是00:00
。
修改
未提及:在我的情况下,我不知道我以哪种格式获取日期字符串。它可以是year
,year month
,year month day hours
等。我要问的是如何格式化字符串到目前为止,所有未知值都是:01 for days and months
,{{1 }}。
答案 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)
})()