我在JS中创建了一个日期,如下所示:
var myDate = new Date('2013-01-01 00:00:00');
我假设JS将此读取为UTC时间。但当我执行类似myDate.getTime()的操作时,返回的时间戳大约是格林尼治标准时间凌晨4点。
为什么会这样?我如何获得UTC时间午夜的日期?
至少在Chrome中,这是有效的:
var myDate = new Date('2013-01-01 00:00:00 UTC');
如果您放置GMT
而不是UTC
,它也会起作用。但我不知道这是否足够跨浏览器。
我住在印度。因此,我的时区是印度标准时间(IST),它在tz数据库中列为Asia/Kolkata
。印度比格林尼治时间提前5小时30分钟。因此,当我执行new Date("2013-01-01 00:00:00")
时,格林尼治时间的实际时间是"2012-12-31 18:30:00"
。
我相信你住在美国是因为你在美国东部时间(GMT-04:00)?我说得对吗?
如果你想在格林尼治标准时间而不是当地时区解析时间,那么可以这样做:
new Date("2013-01-01T00:00:00+00:00");
请注意日期和时间之间的大写T
,以及结尾处的+00:00
。这是用于解析特定时区中给定时间的格式。
给定日期字符串"2013-01-01 00:00:00"
,您可以使用以下函数将其转换为所需格式:
function formatDateString(string, timezone) {
return string.replace(" ", "T") + timezone;
}
然后您可以创建如下日期:
new Date(formatDateString("2013-01-01 00:00:00", "+00:00"));
将当地时间转换为GMT的另一种方法如下:
var timezone = new Date("1970-01-01 00:00:00"); // this is the start of unix time
现在你有了自己的本地时区作为日期对象,你可以做:
new Date(new Date("2013-01-01 00:00:00") - timezone);
以上所有方法在GMT产生相同的日期。
JS通过您的计算机使用的时区读取此信息。
您可以尝试使用myDate.toUTCString()
获取UTC时间的日期。
如果您想获得时间戳,请使用myDate.getTime()
我的工作只需完成这个
var datetime= new Date()
然而,这个月是1个月,所以你必须添加一个