JavaScript 获取日期问题

发布于 2024-10-06 23:45:47 字数 753 浏览 6 评论 0原文

我对 javascript 的 getDate 函数有一个非常奇怪的问题。在某些函数的开始处,我使用以下方法创建了一个 Date 对象:

var day = new Date(date);  

其中 date 是一个 unix 时间戳。

我不更改日期对象,但过了一会儿,我尝试获取该对象所在月份的日期,但 day.getDate() 一直给我错误的值。

例如:

alert(day.getTime() + "-" + day.getDate() + "-"+ day.getMonth() +"-" + day.getFullYear() + "-" + day.getHours() + "-" + day.getMinutes() + "-" + day.getSeconds());  

给出以下结果:1290297600-15-0-1970-23-24-57

,在其他时候结果为:1290384000-15-0-1970-23 -26-24

这是奇怪的部分,如果你查找 unixtimestamp 1290297600,你会发现这是 2010 年 11 月 21 日 00:00:00 gmt 的时间戳(1290384000 是第二天,同样的)时间)
时间戳是正确的,但我无法理解它给我的日期。
在任何浏览器中我都会遇到这种情况。

我做错了什么?

I have a very weird problem with javascript's getDate function. At the start of some function, i've created a Date object using:

var day = new Date(date);  

in which date is a unix timestamp.

I dont change the day object, but after a while I try to get the day of the month of this object, but day.getDate() keeps giving me the wrong value.

For example:

alert(day.getTime() + "-" + day.getDate() + "-"+ day.getMonth() +"-" + day.getFullYear() + "-" + day.getHours() + "-" + day.getMinutes() + "-" + day.getSeconds());  

gives me the following result: 1290297600-15-0-1970-23-24-57

and at some other point the result is: 1290384000-15-0-1970-23-26-24

And this is the weird part, if you lookup the unixtimestamp 1290297600 you'll see that that's the timestamp for the 21st of november 2010 at 00:00:00 gmt (1290384000 is the next day, same time)
The timestamps are correct, but i cant make sense of the dates it gives me.
This happens to me in any browser.

What am i doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怕倦 2024-10-13 23:45:47

这里的问题是 JavaScript 中的 Date 对象 不采用 Unix 时间戳(秒)自纪元以来),实际上需要自纪元以来的毫秒数。如果您只需将 date 变量乘以 1000,就会得到正确的输出。

示例

The issue here is that the Date object in JavaScript doesn't take the Unix timestamp (seconds since the epoch), it actually takes the milliseconds since the epoch. If you just multiply your date variable by 1000 then you get the correct output.

Example here

决绝 2024-10-13 23:45:47

时间 = Unix 时间戳格式。我在时间中添加了 64800 秒,以便将其转换为山区标准时间。

*timestamp 24 * 60 * 60

.getTime()//毫秒 24 * 60 * 60 * 1000

private DateField dateField1; ////////////////////////

dateField1= new DateField("日期:", DateField.DATE); f.append(dateField1);

日期 d = new Date(); dateField1.setDate(d);

String TimeSeg = String.valueOf(((dateField1.getDate().getTime()/1000)+64800));

Time = Unix timestamp format. I added 64800 second to the time so it would be converted to Mountain Standard Time.

*timestamp 24 * 60 * 60

.getTime()//milliseconds 24 * 60 * 60 * 1000

private DateField dateField1; ///////////////////////

dateField1= new DateField("Date:", DateField.DATE); f.append(dateField1);

Date d = new Date(); dateField1.setDate(d);

String TimeSeg = String.valueOf(((dateField1.getDate().getTime()/1000)+64800));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文