【发布时间】:2013-05-01 12:36:51
【问题描述】:
我有一个 webapp 将部署在具有太平洋时区设置的服务器上。我的应用程序能够在计算中处理 PSTPDT 日期转换,但我面临处理缺失小时/无效时间的问题,如下所述。
无效时间 – 3 月第二个星期日凌晨 02:00 到凌晨 03:00 之间,由于时钟自动向前调整,太平洋时区不存在此时间。
因此,每当输入像 2013 年 3 月 10 日 02:00:00 这样的日期时,系统会自动将其转换为 2013 年 3 月 10 日 03:00:00。我理解这是因为太平洋时区实际上不存在这个时间。
但根据要求,服务器时区不能更改(例如 GMT),仍然需要捕获上述时间(2013 年 3 月 10 日 02:00:00)。此外,服务器自动调整时钟设置也无法更改,因此我必须更改应用程序代码以支持上述。
提前感谢您的帮助。
添加代码以获得更多说明:
SimpleDateFormat sdf = new SimpleDateFormat("ddMMyy HH:mm:ss");
//sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = sdf.parse("100313 02:00:00");
Date date1 = sdf.parse("100313 03:00:00");
System.out.println(sdf.format(date));
System.out.println(sdf.format(date1));
Output:
100313 03:00:00
100313 03:00:00
If i uncomment commented line then output:
100313 02:00:00
100313 03:00:00
【问题讨论】:
-
为什么?您可以在进入系统之前将“10-Mar-2013 02:00:00”作为GMT时间传递或作为字符串参数传递并在输入后转换为Date对象?
-
我收到来自休眠本地查询的日期,没有选项将其作为 GMT 传递。
-
你说这是一个网络应用?您是在 JSP 页面中运行它吗?日期起源于哪里,它们代表什么?你说用户正在输入它们 - 你的意思是在网络浏览器中?你可以在那里使用 JavaScript 吗?它们是否代表用户的本地时区,可能与服务器时区不同,你关心吗?