2013-05-12 53 views
0

如果例如一个servlet期望从用户提交的表单中获得一个日期,这个日期将作为字符串作为用户参数的一部分发送。
我们如何知道如何将此字符串转换为日期?
我的意思是语言环境可能不同。可能是M/D/YD/M/Y
那么我们怎么能在服务器端知道这一点?我认为这在其他语言中也是一个问题?例如。服务器端的脚本?我们如何知道用户提交日期的格式?

+1

美国军方要求格式为dd mmm yyyy,例如01 Mar 2013,消除歧义 – 2013-05-12 19:55:23

+0

@ Zim-ZamO'Pootertoot:需要谁?浏览器? – Cratylus 2013-05-12 19:57:58

+0

由军方或其承包商制作的网站的表单域,例如月份的下拉框将具有{Jan,Feb,Mar,...}等,而不是{01,02,03,...};通常如果一个网站使用mm/dd/yyyy或者dd/mm/yyyy,那么这在表单字段中就已经清楚了,这样用户就不会感到困惑,但是一旦数据被服务器读取(假设它保存为字符串,而不是转换为UTC或其他),那么它可能会变得模糊,如果数据上下文以某种方式丢失,而dd/mmm/yyyy永远不会变得模糊 – 2013-05-12 20:05:51

回答

1

你无法确定。你必须根据语言环境做出假设,或者你需要指定一个特定的顺序。像01/02/12这样的日期可以是1901年2月12日或2001年,也可以是1912年或2012年的第一个二月,或者是1912年或2012年1月2日的第二个。从格式中无法知道。

BTW ISO-8601格式是y/m/d的顺序。

+0

因此,如果我们在html页面中使用图形小部件,例如'jQuery'它会根据客户端的语言环境发送日期,但是在服务器上我们无法知道客户端语言环境?所以使用这种小部件是没用的? – Cratylus 2013-05-12 19:56:23

+0

没有语言环境的日期没用。我很惊讶这不能被修复,但这是你在JavaScript端不得不做的。 – 2013-05-12 19:59:08

+0

那么从'jquery-ui'输入我看到:'05/20/2013' – Cratylus 2013-05-12 20:00:02

0

使用日期控件的格式,其中指定格式,通常基于用户的区域设置。