Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript日期传递给java_Java_Javascript_Formatting - Fatal编程技术网

将javascript日期传递给java

将javascript日期传递给java,java,javascript,formatting,Java,Javascript,Formatting,我在服务器端以UTC时区存储日期。 当客户机(浏览器)希望向服务器传递某个日期时,它会发送如下日期 "Tue Jan 03 2012 16:50:32 GMT+0400 (Russian Standard Time)" 这是所有浏览器的标准格式吗 如果1。如果为false,如何重新定义日期格式函数?这是一种好的做法吗 如何使用java.text.simpleDataFormat将JSDates转换为UTCjava.util.Date 更新 我认为将日期作为格式化字符串传递(带有时区部分)会减少

我在服务器端以UTC时区存储日期。 当客户机(浏览器)希望向服务器传递某个日期时,它会发送如下日期

"Tue Jan 03 2012 16:50:32 GMT+0400 (Russian Standard Time)"
  • 这是所有浏览器的标准格式吗
  • 如果1。如果为false,如何重新定义
    日期
    格式函数?这是一种好的做法吗
  • 如何使用
    java.text.simpleDataFormat
    将JS
    Date
    s转换为UTC
    java.util.Date
  • 更新


    我认为将日期作为格式化字符串传递(带有时区部分)会减少麻烦,因为我不必费心在客户端将日期转换为UTC。因此,我避免在JS代码中进行任何日期转换。

    您可以使用格式发送数据,也许?

    我不知道这种格式是否适用于所有浏览器


    但是您可以使用JavaScript中的函数,该函数返回自1970年1月1日00:00:00 UTC以来的毫秒数,并使用此值初始化Java。

    您应该发送自纪元(1970年1月1日UTC)以来的毫秒数,该毫秒数可通过
    +
    前缀运算符获得,如
    +新日期(2012,0,1)

    发送任何带有时区的内容都需要两台机器具有相同的时区定义,这意味着您可能会遇到一些微妙的错误,即两个日期在一台机器上以一种顺序出现,但在另一台机器上以不同的顺序出现。您可以通过使用millis-since-epoch表示法来消除这类bug

    回答您的问题:

    这是所有浏览器的标准格式吗

    Date.prototype.toString
    toutString
    都依赖于实现,但
    toISOString
    是可靠的

    15.9.5.43
    Date.prototype.toISOString()
    #Ⓣ Ⓡ

    此函数返回一个字符串值,该字符串值表示此日期对象表示的时间实例。字符串的格式为15.9.1.15中定义的日期-时间字符串格式。字符串中存在所有字段。时区始终为UTC,由后缀Z表示。如果此对象的时间值不是有限数,则会引发RangeError异常

    15.9.1.15日期时间字符串格式Ⓣ Ⓔ Ⓑ

    ECMAScript基于ISO 8601扩展格式的简化定义了日期时间的字符串交换格式。格式如下:
    YYYY-MM-DDTHH:MM:ss.sssZ

    鉴于说

    15.9.5.2
    Date.prototype.toString()
    #Ⓣ Ⓡ

    此函数返回一个字符串值。字符串的内容取决于实现,但旨在以方便的、人类可读的形式表示当前时区中的日期

    15.9.5.42
    Date.prototype.toutString()
    #Ⓣ Ⓡ

    此函数返回一个字符串值。字符串的内容取决于实现,但旨在以方便的、人类可读的UTC格式表示日期

    注:目的是生成一个比15.9.1.15中规定的格式更可读的日期字符串表示形式。选择的格式不必是明确的或易于机器分析的。如果实现没有首选的人类可读格式,建议使用15.9.1.15中定义的格式,但使用空格而不是“T”分隔日期和时间元素


    客户端代码是什么样子的?如果它可以传递“从Unix纪元开始的毫秒数”值,这将更简单,只需要简单的整数解析。请参阅@jon skeet,查看我的更新。谢谢。@plasticrabit:JavaScript
    Date
    已经知道了自epoch以来的UTC毫秒数-最好不要引入时区。我担心JavaScript.getTime()返回当前时区调整值。@plasticrabit:it不应该。。。当你说你“害怕”时,你是说你担心文档可能不正确,还是说你尝试过,看到了错误的值?