正确使用New Date()返回的机器时间
来源:互联网 发布:php 偏移量计算 编辑:程序博客网 时间:2024/05/22 17:40
正确使用New Date()返回的机器时间
在用JAVA开发考试培训系统中,我在后台使用new Date()来获得当前时间放到session里面作为考试开始时间,当用户提交时用JavaScript中的new Date()来获得当前时间作为考试结束时间,当用这两个时间来计算考试所花的时间时,发现结果经常不对,有时竟然是负数。
2、关键过程:根本原因分析
在后台使用new Date()获得的当前时间是服务端的时间,而用户提交时JavaScript中的new Date()获得的是客户端的时间,如服务器和客户端的时间并不同步的话,得到的结果当然会不正确了。
3、结论:解决方案及效果
后来在其他地方也曾遇到过类似的问题,通过实际代码测试得到的结论如下 :在哪台机器上运行的代码,取得的机器时间,就是该机器的当前时间(Date类缺省的初始化或构造函数使用的时间是当前机器时间)。因此一般存在四种不同类型的时间,
1) 在SQL语句中使用SysDate
得到的时间是数据库系统所在机器的当前时间。
2).在WEB服务器端JavaBean的JAVA语句中使用(Servlet、一般的java类等也属于这一
范畴)new Date()
得到的时间是WEB服务器所在机器的当前时间。
3).在EJB的JAVA语句中使用new Date()
得到的时间是发布EJB的机器(EJB容器所在机器)的当前时间。
4).在浏览器页面中的javascript脚本语句中使用new Date()(在浏览器端运行的java小应
用程序applet等也属于这一范畴)
得到的时间是浏览器所在机器(客户端)的当前时间。
因此本案例中的问题只需要将获取的时间统一取服务端或者客户端时间就可以解决,建
议统一取服务器端时间,防止用户通过修改客户端时间作弊。
4、经验总结:预防措施和规范建议
区分不同的New Date()的场景,正确的使用。
在用JAVA开发考试培训系统中,我在后台使用new Date()来获得当前时间放到session里面作为考试开始时间,当用户提交时用JavaScript中的new Date()来获得当前时间作为考试结束时间,当用这两个时间来计算考试所花的时间时,发现结果经常不对,有时竟然是负数。
2、关键过程:根本原因分析
在后台使用new Date()获得的当前时间是服务端的时间,而用户提交时JavaScript中的new Date()获得的是客户端的时间,如服务器和客户端的时间并不同步的话,得到的结果当然会不正确了。
3、结论:解决方案及效果
后来在其他地方也曾遇到过类似的问题,通过实际代码测试得到的结论如下 :在哪台机器上运行的代码,取得的机器时间,就是该机器的当前时间(Date类缺省的初始化或构造函数使用的时间是当前机器时间)。因此一般存在四种不同类型的时间,
1) 在SQL语句中使用SysDate
得到的时间是数据库系统所在机器的当前时间。
2).在WEB服务器端JavaBean的JAVA语句中使用(Servlet、一般的java类等也属于这一
范畴)new Date()
得到的时间是WEB服务器所在机器的当前时间。
3).在EJB的JAVA语句中使用new Date()
得到的时间是发布EJB的机器(EJB容器所在机器)的当前时间。
4).在浏览器页面中的javascript脚本语句中使用new Date()(在浏览器端运行的java小应
用程序applet等也属于这一范畴)
得到的时间是浏览器所在机器(客户端)的当前时间。
因此本案例中的问题只需要将获取的时间统一取服务端或者客户端时间就可以解决,建
议统一取服务器端时间,防止用户通过修改客户端时间作弊。
4、经验总结:预防措施和规范建议
区分不同的New Date()的场景,正确的使用。
- 正确使用New Date()返回的机器时间
- 关于new Date()的使用
- new Date() 输出来的时间不正确
- js处理new Date()获取的时间
- var * =new Date(str)返回 Invalid date问题——javascript(js)时间初始化
- iE浏览器使用new Date()方法,会返回NAN
- new Date()获取的时间与System获取的时间
- new Date()时间不是当前时间问题的解决方法
- Java New Date的时间与电脑时间时差处理
- javascript 中的 new Date() 的使用总结
- Date 时间函数的使用
- Java 时间格式 new Date()
- new Date()获取的时间精确到毫秒
- js中获取时间new date()的用法
- 关于IE11不能new date,转换时间的方法
- js中获取时间new date()的用法
- JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
- SpringMVC返回的json数据Date(时间)格式化的问题
- source 命令
- 【NPC】13、三维匹配规约到子集和问题
- Discuz!X2 附件分表与主题图片表解析
- C++ 对象的内存布局(上)
- How to detect whether a module is managed code or not
- 正确使用New Date()返回的机器时间
- Python模块及函数的使用
- QT与OpenGL之坐标轴缩放
- POJ 3349 Snowflake Snow Snowflakes 链表
- 解决eclipse 修改替换xml文件,卡死 慢
- C/C++面试经典大全
- linux下Mysql的数据文件搬家
- shell分割字符串
- 计算一段程序运行的时间