日期应该如何发布到java
How should dates be posted to java?
我一直有这种怀疑,而且一直有问题。问题是,例如,我有一个请求用户输入日期的表单,它通过ajax发布到服务器,并接收日期字段作为日期类型。有时,我所做的是在不同的参数中发送不同的值,比如:
{
day: 18,
month: 05,
year: 2014,
hour: 10,
min: 30
}
然后在服务器中,根据接收到的值设置Date类型。但后来,当然,我认为这不是一个好的做法,我开始制作这样的字符串:
{
date: "2014-09-16T12:00:00Z"
}
但是这当然不考虑用户的位置以便保持相应的GMT+-。。
我也想过发布毫秒,但这里再次出现了GMT的问题。
我用弹簧,只是为了记录。
那么,应该怎么做呢?这样做的最佳做法是什么?
在UTC中思考和存储
通常最好以UTC格式存储和处理日期-时间值。转换为本地日期时间,仅在用户期望时进行演示。如果知道数据输入用户的时区或偏移量很重要,除了UTC值外,还应单独记录。
询问时区
至于在客户端机器上确定用户的时区或偏移量,在网络浏览器中,您可以按照另一个答案中的建议通过JavaScript进行询问。但最终,如果时区或偏移量真的很重要,您应该询问用户。出示一份清单供他们选择。使用正确的时区名称,不要使用3或4个字母的代码。这些代码既不是标准化的,也不是唯一的。
您不能信任用户计算机上的时钟。当您出于任何重要目的需要了解当前时间时,请使用服务器的时间,因为您可以控制该机器。并确保服务器计算机连接到一个或多个时间服务器。
按ISO 8601序列化
当将日期时间值序列化为字符串时,使用ISO8601格式绝对是一种方法。
java 8中的新java.time包通过附加时区名称来扩展ISO 8601格式。有趣的想法,但不是标准的afaik。
不跟踪Epoch的计数
从epoch开始按计数跟踪日期时间对人类来说毫无意义,这使得调试和验证变得棘手且容易出错。日期-时间库内部跟踪epoch中的计数。但我们拥有这些库是有原因的,目的是让编程工作更容易、更正确。一些极客类型的人可能会提出这种方法。但他们往往对约会时间的工作有多棘手和棘手感到天真。
此外,不同的环境和库使用不同的规模:整秒、毫秒、微秒和纳秒。大约有二十多个时代已经被用于各种计算机系统中。
避免使用j.u.Date&日历
永远不要使用与java捆绑在一起的java.util.Date和.Calendar类。它们是出了名的麻烦,应该避免。相反,使用JodaTime或添加到Java8中的新java.Time包来取代那些旧类。
本地日期&LocalTime
像Joda Time这样的好库提供了一些课程,当你只想要一个日期或一天中的时间,而不需要时区偏移。
但不要认为忽略时区会让你的生活更轻松。只有当你的意思是"公司政策是我们在底特律、马赛和赫尔辛基的工厂将在下午12:30停下来吃午饭"时,才使用这些词。工厂并不是同时停止,而是在12:30这一特定时刻停止。
如果您的意思是公司总裁将在底特律时间上午10点进行网络直播,请将该值存储为UTC调整后的值。然后,在向用户演示时,再次调整到他们自己的底特律、马赛或赫尔辛基时间。
在JavaScript中使用getTimezoneOffset()
获取偏移量,然后应用该偏移量使本地GMT 中的所有时间
JavaScript getTimezoneOffset()方法
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 如何从Java/scala调用js美化程序
- Ajax发布表单序列化,发布引号'
- 如何使用json将对象列表从java转换为javascript
- Java脚本时间添加
- Ajax Live搜索发布到Laravel视图
- Sails.js:同时发布文本输入和一个文件
- WebDriverException:tinyMCE未在selenium Web driver java中定义
- 如何将字符串值从php页面发送到java脚本页面
- 使用acess代币登录Facebook,并通过网络应用程序离线发布
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- Android Java 处理程序在循环中的每个记录处发布延迟
- 使用 Java 脚本 SDK 的 Facebook API 发布操作
- Eclipse-如何在没有web.xml文件的情况下发布非Java资源
- 日期应该如何发布到java
- 使用可由Javascript订阅者使用的CometD Java客户端发布消息
- 用java脚本刷新页面,但我想发布一些刷新页面
- 使用JavaScript向Restful Java Services发布不起JSON的作用