我在客户端Javascript的日期操作时一直使用'date as a long'(getTime()/ +),用于比较,评估以及从(而不是)我们的Java服务器传输日期一边到客户端Javascript。 它使我免于日常处理中浏览器不当行为的麻烦。
但最近这种做法受到质疑,我仍然没有任何理由为什么我应该使用字符串日期。这个时间戳的使用是否有任何问题我无法看到?
答案 0 :(得分:0)
JS时间戳是自纪元以来的毫秒数。大多数服务器系统(除非你正在处理node.js)使用简单的秒 - 自那个时代。因此,表示“now”类型日期的任何JS时间戳都超过了正常32位有符号unix时间戳的大小限制,并且将被截断/损坏。
发送字符串可以避免这种情况,因为几乎任何体面的系统都可以接受日期字符串并将其转换回自己的本机时间系统,而采用损坏的截断int只是垃圾输入,垃圾输出问题。
当然,如果您的服务器端系统知道它们将接收JS时间戳,它们可以接受为字符串,然后执行一些基本截断以减少毫秒组件,使它们保持正常的基于秒的时间timetamp字符串,可以转换为int。
答案 1 :(得分:0)
当您的服务器端是Java时,应该没有任何问题。
我唯一可以补充的是 - 在客户端使用像moment.js
这样的javascript库很方便。 moment.js
是一个丰富的日期处理库。如果您需要进行大量的日期操作,以不同的格式显示或从用户那里读取日期,请选择它。