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

2023-11-22

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

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

据我了解,使用 getTime() 返回与时区无关的瞬间。例如,如果用户捕获了 2012 年 7 月 17 日下午 4:39 CDT,服务器可能会将其存储为 2012 年 7 月 17 日晚上 11:39 CEST,但是一旦服务器将其转换为自 GMT 以来的毫秒数,并且客户端会创建一个如果从这些毫秒开始计算日期,它将成功重建原始的 2012 年 7 月 17 日下午 4:39 CDT。这是真的?


文章中提出了一些很好的建议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 对象,它会得到原始日期吗?

Yes.

Java's Date(long date)构造函数 and getTime() method以 unix 时间毫秒进行操作。 JavaScript 也是如此getTime() and Date构造函数。除此以外不应涉及其他时区协调世界时(格林尼治标准时间/世界标准时间)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java/JavaScript 日期:这是真的吗? 的相关文章

随机推荐

  • mysql 别名的未知列问题

    我不明白为什么当该列是创建的别名时我会得到一个未知列 任何帮助都会很棒 code SELECT DISTINCT c id SUM c width feet 12 SUM c width inches AS width SUM c heig
  • 通过多个活动传递数据

    1 是我的第一个活动 主要 2 是我的第二项活动 3 是我的第三项活动 我想从 1 运行 2 然后形成 2 运行 3 然后从 3 获取数据并将其返回到 1 希望大家能理解 这是我的代码 像这样运行 2 form 1 Intent inten
  • Java RSA 中字符串中的密钥

    我在我的应用程序中使用 RSA 加密技术 为了存储生成的公钥 我将其转换为字符串 然后将其保存在数据库中 Key publicKey null Key privateKey null KeyPair keyPair RsaCrypto ge
  • 删除子图中的死角,同时保留标题和标签

    您好 我在 matlab 中遇到问题 我想创建一个包含 10 个子图的图形 2X5 方向 但问题是我想减少它们之间的死角区域 我还需要保留第一行图像的标题 xlabel 和第二行图像的 xlabel 仅 不需要 ylabel 到目前为止 我
  • Visual Studio 2015 无法与 Apache Cordova 工具一起使用

    我完整安装了 VS 2015 Enterprise Tools for Apache Cordova 当我打开或创建任何项目时 它不会构建 甚至不会在 运行 按钮上显示 Ripple 模拟器或设备信息 我已经完全重新安装了 但还是一样 当我
  • 使用网络音频 api 播放简单的声音

    我一直在尝试按照一些教程中的步骤使用按钮通过网络音频 API 播放简单的编码本地 wav 或 mp3 文件 我的代码如下 testAudioAPI js window AudioContext window AudioContext win
  • 关于何时应该将直接缓冲区与 Java NIO 一起用于网络 I/O 的简单规则?

    具有以简单直接的方式解释复杂事物的天赋的人可以解决这个问题吗 使用 Java NIO 进行网络 I O 时 为了获得最佳性能 何时应使用直接 ByteBuffer 与常规 ByteBuffer 例如 我应该读入堆缓冲区并从那里解析它 执行多
  • Postgres:找不到适用于 jdbc 的驱动程序

    我知道这可能与此处发布的问题重复 抱歉 这是我为数据库连接编写的代码 try Class forName org postgresql Driver catch ClassNotFoundException e e printStackTr
  • 如何在 numpy 和 R 之间传递大型数组?

    我正在使用 python 和 numpy scipy 为文本处理应用程序执行正则表达式和词干提取 但我也想使用 R 的一些统计包 将数据从 python 传递到 R 的最佳方法是什么 然后回来 另外 我需要在某个时候将数组备份到磁盘 所以如
  • 有没有办法让SCNNode总是在其他节点前面?

    我一直在尝试使用场景套件制作一个场景 其中指定的对象始终位于其他对象的前面 尽管事实上它实际上位于其他对象的后面 与此类似的效果用于blender 显然 搅拌机使用 GUI 和大量数学来转换 2D 对象 但我需要在具有 SCNGeometr
  • 如何在 Rails 应用程序中运行 rake 任务

    我想做的事 在 model rb 中 在 after commit 中 我想运行 rake 任务 ts reindex ts reindex 通常与 rake 一起运行 ts index 如果您希望此 rake 代码在请求周期内运行 那么您
  • 如何从 Chrome 扩展程序打开 mailto: 链接?

    我有一个名为 URL 缩短 的 Chrome 扩展程序Shrtr 目前 它允许用户将缩短的 URL 复制到剪贴板 但在下一个版本中 我添加了使用电子邮件发送缩短的 URL 的功能mailto 链接 即mailto subject
  • Django 添加占位符到 django 内置登录表单

    我正在使用 django 内置登录forms我想在用户名和密码中添加占位符 我的模板 div class form group div class col md 12 form username add class form control
  • Android Market - 上传 APK 文件时出错

    刚才我已经开发了一个应用程序 现在我准备将其上传到Android市场 但是当我尝试上传时 它显示以下错误消息 市场不接受使用调试证书签名的 apk 创建有效期至少 50 年的新证书 Market 要求用于签署 apk 的证书至少在 2033
  • 序列化 .net 对象并省略文档类型?

    我编写了一些 net 代码来使用 XMLSerializer 类序列化对象 public static string serialize object o Type type o GetType System Xml Serializati
  • Jquery - 不可滚动 div 上的滚动事件

    example http jsbin com ofiy 2 edit preview 我尝试用不可滚动的div 绿色的 滚动一个div 红色的 我的问题是 当我在绿色 div 上滚动时 jqueryscroll 不着火 HTML div s
  • 当 rpm 文件中存在用于 rpm 安装的“缺少”lib 时

    我正在为 centos 生成一个 rpm 文件 但是当我尝试在干净的机器上安装它时 它失败了 gt Running transaction check gt Package grass x86 64 0 6 4 4 1 el6 will b
  • Facebook 登录无法在 Safari/ iPhone 中打开

    我正在创建一个显示 Facebook 好友的应用程序 首先 用户需要单击登录按钮 然后在填写登录 ID 和密码后会出现一个简单的弹出屏幕 其中将显示好友列表 一切正常 可以在 Firefox Chrome IE 上运行 但不会在 Safar
  • Apache POI - 使用 XSSFWorkbok + servlet 响应

    我的 java 应用程序在启用下载 XLSX 文件时遇到问题 按照此链接中显示的示例 使用 Apache POI 创建 excel 文件供用户下载 我尝试了两种配置来下载 保存电子表格 首先使用 XLS 文件 response setCon
  • Java/JavaScript 日期:这是真的吗?

    假设用户在与应用程序服务器不同的时区通过浏览器运行我的 Web 应用程序 我使用 JavaScript 在客户端序列化日期date getTime 方法 我通过 Json 发送结果毫秒 然后通过调用在服务器端创建一个 Java Date 对