在我的Java脚本应用程序中,我以这样的格式存储日期:
2011-09-24
现在,当我尝试使用上面的值创建一个新的Date对象(这样我就可以以不同的格式检索日期)时,日期总是返回一天。见下文:
var date = new Date("2011-09-24");
console.log(date);
日志:
Fri Sep 23 2011 20:00:00 GMT-0400 (Eastern Daylight Time)
在我的Java脚本应用程序中,我以这样的格式存储日期:
2011-09-24
现在,当我尝试使用上面的值创建一个新的Date对象(这样我就可以以不同的格式检索日期)时,日期总是返回一天。见下文:
var date = new Date("2011-09-24");
console.log(date);
日志:
Fri Sep 23 2011 20:00:00 GMT-0400 (Eastern Daylight Time)
当前回答
下面的方法对我很有效
var doo = new Date("2011-09-24").format("m/d/yyyy");
其他回答
虽然在OP的情况下,时区是EDT,但不能保证执行脚本的用户将是EDT时区,因此硬编码偏移量不一定有效。我找到的解决方案是分割日期字符串,并使用date构造函数中的单独值。
var dateString = "2011-09-24";
var dateParts = dateString.split("-");
var date = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);
注意,您必须考虑JS的另一个奇怪之处:月份是从零开始的。
您可以通过将此日期转换为UTC日期
new Date(Date.UTC(Year, Month, Day, Hour, Minute, Second))
并且总是建议使用UTC(通用时区)日期,而不是使用本地时间的日期,因为默认情况下,日期以UTC存储在数据库中。因此,在整个项目中使用和解释UTC格式的日期是一个很好的实践。 例如,
Date.getUTCYear(), getUTCMonth(), getUTCDay(), getUTCHours()
因此,使用UTC日期解决了所有与时区相关的问题。
注意,东部夏令时是-4小时,而你返回的日期是20小时。
20h + 4h = 24h
2011年9月24日午夜。日期是用UTC (GMT)解析的,因为您提供了一个只有日期的字符串,没有任何时区指示器。如果您给出的日期/时间字符串不带指示器(new date ("2011-09-24T00:00:00")),那么它将在您的本地时区进行解析。(历史上有不一致的地方,不仅仅是因为规范改变了不止一次,但现代浏览器应该是可以的;或者你总是可以包含一个时区指示器。)
你得到了正确的日期,只是没有指定正确的时区。
如果你需要访问日期值,你可以使用getUTCDate()或任何其他getUTC*()函数:
var d, 天; d = new日期('2011-09-24'); 天=[‘太阳’,‘我’,“面前”,“结婚”,“碰头”,“星期五”,“坐”); console.log(天[d.getUTCDay ()));
处理这个问题的最好方法是不使用更多的转换方法,
var mydate='2016,3,3';
var utcDate = Date.parse(mydate);
console.log(" You're getting back are 20. 20h + 4h = 24h :: "+utcDate);
现在只需在日期中添加GMT或附加它。
var mydateNew='2016,3,3'+ 'GMT';
var utcDateNew = Date.parse(mydateNew);
console.log("the right time that you want:"+utcDateNew)
生活:https://jsfiddle.net/gajender/2kop9vrk/1/
这解决了我的问题(感谢@Sebastiao的回答)
var date = new Date();
//"Thu Jun 10 2021 18:46:00 GMT+0200 (Eastern European Standard Time)"
date.toString().split(/\+|-/)[0] ; // .split(/\+|-/) is a regex for matching + or -
//"Thu Jun 10 2021 18:46:00 GMT"
var date_string_as_Y_M_D = (new Date(date)).toISOString().split('T')[0];
//2021-06-10