相关疑难解决方法(0)

使用设置的时区创建日期而不使用字符串表示

我有一个网页,每天,每月和每年有三个下拉菜单.如果我使用Date带有数字的JavaScript 构造函数,那么我得到一个Date当前时区的对象:

new Date(xiYear, xiMonth, xiDate)
Run Code Online (Sandbox Code Playgroud)

给出正确的日期,但由于夏令时,它认为日期是GMT + 01:00.

这里的问题是我然后将它传递Date给Ajax方法,当日期在服务器上反序列化时,它已经转换为GMT,因此丢失了一个小时,将一天移回一.现在我可以将日,月和年单独传递到Ajax方法中,但似乎应该有更好的方法.

接受的答案指出了我正确的方向,但只是单独使用setUTCHours()改变了:

Apr 5th 00:00 GMT+01:00 
Run Code Online (Sandbox Code Playgroud)

Apr 4th 23:00 GMT+01:00
Run Code Online (Sandbox Code Playgroud)

然后我还必须设置UTC日期,月份和年份以结束

Apr 5th 01:00 GMT+01:00
Run Code Online (Sandbox Code Playgroud)

这就是我想要的.

javascript timezone

392
推荐指数
13
解决办法
66万
查看次数

Javascript日期对象总是休息一天吗?

在我的Java Script应用程序中,我将日期存储为如下格式:

2011-09-24
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用上面的值来创建一个新的Date对象(所以我可以以不同的格式检索日期)时,日期总会在一天后返回.见下文:

var doo = new Date("2011-09-24");
console.log(doo);
Run Code Online (Sandbox Code Playgroud)

日志:

Fri Sep 23 2011 20:00:00 GMT-0400 (Eastern Daylight Time)
Run Code Online (Sandbox Code Playgroud)

javascript date

205
推荐指数
13
解决办法
15万
查看次数

Javascript Date()将错误的日期提前一小时

我从我的控制器发送这个日期在java(Spring-MVC)中的类型mysqldatetime

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "..") public Date getYy() { 
    return this.yy; 
}
Run Code Online (Sandbox Code Playgroud)

如: [2015-09-30 00:00:00.0]

当我用ajax得到这个日期时1443567600000:

new Date(1443567600000) 转换成 Tue Sep 29 2015 23:00:00 GMT+0000 (Maroc)

那么为什么我的错误约会一小时呢?

我们解决它

d = new Date(value) ;
d.setTime( d.getTime() - new Date().getTimezoneOffset()*60*1000 );
Run Code Online (Sandbox Code Playgroud)

因为它是夏令时(DST)或夏令时问题.好文章

javascript java jquery

9
推荐指数
4
解决办法
2万
查看次数

javascript错误地确定夏令时时间线 - 2006年的一个例子

我在javascript new Date()对象上阅读了许多关于夏令时时间线的 StackOverflow问题- 就像它们被越过时一样.但是,我还没有看到关于这个特定问题的答案,或者在仍然依赖 'unix time'的情况下解决它的方法.

我个人选择通过将javascript日期作为日期传递给我的PHP代码而不是unix时间来解决此问题.然而,唠叨的问题仍然存在!我已经在IE8,Chrome和FF上确认了这种行为,所以我假设它会对你的行为相同.(更新: OSX用户可能无法生成此行为)

我的研究; 对我的问题最近的问题:

  • 该用户正在处理DST更改周围的特定时间.
  • 该用户担心时间的呈现取决于用户的时区.该页面上接受的答案提到getTimezoneOffset"片状",这使我无法深入研究.
  • 请参阅下面的答案,了解其他一些有很多见解的问题

我已经在2006年11月1日左右生成了测试场景.根据您所在的时区,这可能会或可能不会对您有所帮助.如果我正确理解了javascript方面,您需要将PC的时钟同步到

东部时间(美国和加拿大)并选中"自动调整夏令时的时钟".

我将这个实验基于PHP的"印第安纳波利斯"时区.我的javascript结果,当我发现2006年11月1日的unix时间与PHP生成的时间相差一小时(3600秒).根据这个页面(谢谢乔恩!)javascript是错误的.

这两种语言的结果" 于2006年6月11日重新达成协议!

这和其他的研究使我相信,得到的Javascript的历史错误,选择了错误的周日"依傍"了DST的 - 从而导致我看到的差异.

我试图尽可能地简化这个,但仍然有相当多的齿轮在运动.

1)这是PHP代码和输出,显示直到11/01/2006日期之前的CORRECT毫秒数.

date_default_timezone_set("America/Indiana/Indianapolis");
echo "Unixtime for November 1, 2006 is: ".strtotime("11/01/2006")."\n";
echo "Unixtime for November 6, 2006 is: ".strtotime("11/06/2006");
Run Code Online (Sandbox Code Playgroud)

结果是:

Unixtime for November 1, 2006 is: 1162357200 (where the disagreement lies)
Unixtime for November 6, 2006 is: 1162789200
Run Code Online (Sandbox Code Playgroud)

它们都基于GMT-0500.

2)在Javascript中,(请参阅我的 …

javascript php windows unix-timestamp dst

6
推荐指数
1
解决办法
1196
查看次数

标签 统计

javascript ×4

date ×1

dst ×1

java ×1

jquery ×1

php ×1

timezone ×1

unix-timestamp ×1

windows ×1