当前位置: 首页 > 面试题库 >

Java / JavaScript日期:这是真的吗?

云京
2023-03-14
问题内容

因此,可以说用户在与应用程序服务器不同的时区中通过其浏览器运行我的Web应用程序。我使用JavaScript的date.getTime()方法在客户端序列化日期。我通过Json发送产生的毫秒数,然后通过调用在服务器端创建Java
Date对象new Date(millisecondsFromJS)。我将其存储在MySql上,检索它,通过调用Java
date.getTime()再次将其序列化,然后通过Json将其再次发送给客户端。

如果我用这些毫秒创建一个JavaScript
Date对象,它将得到原始日期吗?我已经成功完成了此过程,但是客户端和服务器当前处于同一时区。如果时区不同,我不确定日期是否会在此过程中被破坏。

据我了解,使用getTime()返回的时间瞬间与时区无关。例如,如果用户在CDT的2012年7月17日下午4:39捕获了服务器,则服务器可能会将其存储为CEST的2012年7月17日在11:39
PM,但是一旦服务器将其转换为毫秒,因为GMT和客户端创建了一个如果以这些毫秒为单位,那么它可以成功地重建原始的CDT
2012年7月17日下午4:39。这是真的?


问题答案:

在Dropbox的扩展经验教训的第1部分中,有一些很好的建议:

将所有内容都保留在UTC内部
!服务器时间,数据库中的内容等。这将节省很多麻烦,而不仅仅是夏时制。某些软件甚至无法正确处理非UTC时间,因此不要这样做!我们将墙上的时钟设置为UTC。如果要向用户显示时间,请在最后一秒进行时区转换。

将unix时间毫秒发送到服务器,您就知道用户选择了哪个时间点。然后使用UTC处理服务器上的所有内容,并将毫秒整数返回给客户端。

客户端/ JavaScript:

var date = new Date();
var clientMilliseconds = date.getTime();
// send clientMilliseconds to server

服务器/ Java:

Date date = new Date(clientMilliseconds);
// store the date, then get it back
long serverMilliseconds = date.getTime();
// send serverMilliseconds back to client

客户端/ JavaScript:

var date = new Date(serverMilliseconds);
// If receiving the error "Invalid Date", serverMilliseconds
// needs to be converted to an Integer. Consider:
// parseInt: parseInt(serverMilliseconds, 10)
// unary +:  (+serverMilliseconds)

在此过程中,date服务器和客户端上的对象都将反映各自的时区,因此,如果您同时查看这两个时区,它们看起来可能会有所不同,但是如果您使用相同的时区将它们转换回UTC,则它们并非相同。

因此,回答您的问题:

如果我用这些毫秒创建一个JavaScript Date对象,它将得到原始日期吗?

是。

Java的Date(long date)构造函数和getTime()方法以Unix时间毫秒为单位进行操作。JavaScript
getTime()DateConstructor也是如此。除了协调世界时(GMT
/ UTC),不应涉及其他任何时区。



 类似资料:
  • 问题内容: 如果我有一个日期,而我想要的只是这样的月份和日期(mm / dd),然后把这个月份变成08年7月,您将如何写日期 问题答案: 让我看看我是否理解得很好。 您有“ 07/08”之类的日期,并且想要“ 08年7月”? 您可以尝试SimpleDateFormat

  • 问题内容: 我知道JavaScript中的每个函数都是一类对象,并且它具有内部属性[[scope]],该属性承载该函数的自由变量的绑定记录。但是,有两种特殊情况。 由Function构造函数创建的函数也是闭包吗?由函数构造函数创建的函数对象是特殊的,因为其[[scope]]可能不引用其外部函数的词法环境,而仅引用全局上下文。例如, 这是不直观的。这也称为关闭吗? 如果内部函数没有任何自由变量,我们

  • 问题内容: 当它们转换为字符串时,我需要将Java Date对象转换为与JavaScript日期具有相同格式的字符串。在我们的服务器上,我们有JavaScript日期‘d,格式为: 我有一个Java Date对象,我试图将其转换为相同格式的字符串。到目前为止,我的模式是 (小时,分钟和秒始终为0),但我无法确定时区()的正确模式 谢谢您的帮助!这是到目前为止我正在使用的Java代码,以防万一: 编

  • 目前我正在尝试将日期计算从javascript转换为java,因为我想将它用于Android开发。所以在javascript中,我使用了方法,它将日期转换为自1970年1月1日以来经过的毫秒。在java中,具有相同功能的方法称为。在java和javascript留档中,描述完全相同,但当我插入相同的日期时,我得到了两个完全不同的值。例如: Java代码 Javascript 所以我的问题是: 为什

  • 问题内容: 我需要转换为搜索的内容,但找不到任何内容。那你可以帮我解决这个问题吗? 编辑: 我在GWT屏幕上执行此转换过程。我在屏幕上,使用它的方法可以给我带来价值。因此,我应该将此值放入具有Date类型的对象的属性中。 希望我的编辑会更加清晰。 编辑2: 这行是我的问题的解决方案: 问题答案: 日期转换的最佳方法是使用以毫秒为单位的时间(UTC)。JS Date对象和java.util.Date

  • 本文向大家介绍纯javascript判断查询日期是否为有效日期,包括了纯javascript判断查询日期是否为有效日期的使用技巧和注意事项,需要的朋友参考一下 以下内容主要通过js代码给大家介绍,代码比较简单,包含注释,有好的建议欢迎提出。 如下图,当查询条件含有日期时,如“2012-3-4”,查询前校验输入的日期字符串是否为有效的日期 js判断年月日是否一个有效日期 以上代码就是对日期的有效性校