世界上是否有人可以理解通用的日期格式?


10

在加拿大,每个人都熟悉日期格式YYYY-MM-DD。在欧洲或南非,他们更喜欢DD-MM-YYYY。有些来自南非的用户对YYYY-MM-DD日期格式感到困惑。有没有办法处理这种情况?

我正在考虑对所有对象使用以下方法格式: Feb 02, 2011


21
我认为YYYY-MM-DD格式也是ISO标准。
FrustratedWithFormsDesigner

2
“在欧洲或南非,他们更喜欢DD-MM-YYYY。” 除了如在匈牙利(YYYY.MM.DD)或芬兰(DD.MM.YYYY),或...很抱歉,现实是凌乱:-(
彼得Török

6
那不同的日历呢?

4
在北美收​​集雷达数据时,我们将其用作文件名:prefix_1999_12_23_16_45_53.ext。主要原因:这很容易排序,搜索和解析。搜索时,您确实确实想首先从最高有效的单位开始,以便尽快达到目标。这种字符串甚至是二进制树友好的。该实验室由来自欧洲的学生主导,但我认为这只是常识,即使不是科学标准。但是,在我长大的国家/地区,我们会每天使用DD-MM-YYYY。推理:醒来时,您想了解的第一部分是什么?
工作

2
@Frustrated,我猜他的观点是,有一个不同的起始年日历(如何将一个穆斯林解释如1268年12月30日?),或月亮个月(其中有大约13%年)等,所以是通用岂止商定哪个号码是一天,也就是一个月...
彼得Török

Answers:


15

暧昧的部分是从一个月分化一天,如果他们是用数字表示。

02/03是2月03日还是3月02日?

通过使用其名称更改其编号中的月份标识符,可以消除这种歧义。要回答您的问题,您的变体Feb 02, 2011似乎是一个很好的解决方案。

如果仅用2位数字书写年份,则仍然存在潜在的问题,但是很容易解决(使用4)。


10
然后,您只需要一个翻译文件即可使用不同的语言输入月份名称。
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner别忘了获得正确的(著名的)缩写的专业翻译。
妮可

那不用打扰几个月命名的语言呢?
只是我的正确观点,

19

。没有公认的日期格式。

ISO 8601定义日期格式的国际标准。因此,这可能是最好的折衷方案。但是正如您所说,用户并不总是喜欢这种格式。

唯一正确的解决方案是为不同国家/地区提供不同的格式。如果您选择的编程语言有大量关注者,您可能会发现有一个实现此目的的标准库。


2
这很棒。我通常将YYYYMMDD用于日志文件等。现在我可以说我只是在遵守ISO-8601!
Mark Harrison

1
使用ISO 8601时,我通常会发现最好对整个内容进行显式格式化,即1999-12-25T00:00:00.000Z。是的,对于普通人来说看起来有些胡言乱语,但是没有歧义的机会。
MattDavey 2011年

2
“唯一正确的解决方案是为不同的国家提供不同的格式。” -确切地说,我应该如何在可以在世界各地运输的装箱单上打印日期?
Scott Whitlock

@ScottWhitlock:可悲的是,目前还没有普遍接受的解决方案。如果在打印日期时不知道将包裹寄往何处,那么ISO 8601可能是最好的选择。
Kramii

“唯一正确的解决方案是为不同的国家提供不同的格式。” 我会说这是不正确的。今天正好发生在某些图书馆基于我偏爱的languange引起我偏爱的日期格式的有用想法时,引起了混乱。但是作为第一步,因为我们现在无法修复所有文化,因此请使用ISO 8601或几个月的文字。
埃里克一世

9

您应该为此使用文化信息。或至少是本地显示格式。

在JavaScript中,可以将toLocaleString方法用于Date类

对于C#,可以在使用ToString时使用格式字符串。

快速的Google搜索应该会向您展示如何以您选择的语言使用文化。


5

我会使用YYYY-MM-DD(并且总是写出四位数的年份和两位数的月份和日期)。据我所知,YYYY-DD-MM很少见,因此YYYY-MM-DD格式的含糊度最小,最终您的用户会流行起来。此外,您还将获得微不足道的分类优势。


2

您可以给每个用户自己的区域设置,然后根据他们的本地偏好来呈现日期和其他信息吗?


1

很多时候,您可以配置语言环境并在大多数框架中使用I18n。


0

通常,您需要指定格式和值。这是避免所有混淆的唯一方法。例如,您可以说“ 2011-02-02(YYYY-MM-DD)”。但是,它是以牺牲简单性和可读性为代价的,因此请了解您的受众。

您当然可以说“此后,所有日期的格式都为YYYY-MM-DD...。”然后,稍后出现的“ 2011-02-02”将是明确的。这可能更可口,但再次了解您的听众。


是的,除了在爱沙尼亚语中的day =päev和month = kuu,在菲律宾语中是:araw和buwan,在芬兰语中:päivä,kuukausi,在匈牙利语中:nap,hónap,在印度尼西亚语:hari,bulan,在马耳他语中:jum,xahar ,罗马尼亚语:zi,lună,土耳其语:gün,ay,越南语:ngày,tháng...更不用说许多语言,其中月份都不以m开头,或者日期不以d开头(德语:Monat,Tag )以及不使用拉丁字母等语言的语言。
Job

1
好吧,“ 2011-02-02”在任何情况下都是明确的...;)
马丁

0

这个建议可能没有用,但我已经看到数月以罗马数字书写。当然,2011年3月3日可能是11月11日或3月3日,但我想第一种解释会更自然。


1
罗马数字?“自然?”
2011年

@Wonko是“自然的”,因为在这种情况下XI更可能被解释为一个月而不是一天。我承认这是非常主观的。
ggambett

+1,我自己也在想类似的事情。但是,我也同意你的批评家的观点。
Job

从来没有见过这种格式,我首先想到“错别字”或“翻译错误”,然后才想到“罗马数字”。只有这样,我才能尝试猜测其含义。
2011年

更不用说3 / II / 2011最终将被解释为11月。
MSalters 2011年

0

我要说的是,这取决于您在做什么,对输入有多少控制权以及是否将其存储在某个地方?

对于存储,我会使用Mike Dunlavey的建议:

由于您给的原因,只要有选择,我都会走UTC所在的YYYYMMDDHHMMSS。当我没有选择时,我让用户选择。

他没有留下这个答案,所以我会的。

还有一件事:查看以下有关如何输入CC到期日期的屏幕截图:http : //www.ubercart.org/files/credit_card_checkout.jpg

这个例子的妙处在于它不会让您思考。它同时使用数字和月份名称。我会考虑使用类似的输入。对于月份,请同时包含数字和本地化名称。对于年份和日期,请使用数字上/下或组合框。然后,日历控件似乎也很漂亮。

正如我所说,这取决于。对于存储:如果使用数据库,请检查它是否已经提供了良好的明确数据格式。如果使用其他方法,请查看“ YYYYMMDDHHMMSS,以小时为单位的UTC”是否有帮助。为了向用户展示它-考虑可能涉及哪些国家/地区,然后选择最直接的“不要让我思考”的表示形式。还可以考虑提供一个选项。

最后,检查一些已经做过类似事情的酷产品,然后尝试找出它们是如何做的。


啊,废话,阅读屏幕截图时,我以为我们正在谈论11月11日...只是意识到在谈论信用卡的到期日时这一天是没有必要的:/
Matthieu M.

@Matthieu M.,是的,这有点令人误解:)但是,如果您手持CC,并且打算执行数据输入,那么它可能会带来更大的好处。如果有三个盒子-一天一个盒子,那么这可能不太含糊。
Job

0

网站的最终用户没有通用的日期和时间格式。也没有单个日期时间值,因为该值因客户的时区而异。您应该使用全球化-它基于用户的文化来定位数据,时间,货币,日历,数字格式(可以从用户浏览器传递的可接受语言中接收,也可以通过直接在应用程序中实现的开关接收)。某些API(例如.NET)直接支持此功能。

为了以数据库形式存储日期和时间,请使用通用格式-UTC(协调通用时间)。


UTC并不是那么普遍:如果您想考虑leap秒,则应使用TAI
mouviciel 2016年

-2

不幸的是,国际计算世界中的所有智能都无法破解。

Microsoft和其他供应商都没有考虑过添加日期掩码,以使“月”显示为零填充,就像“日”一样,但是为三位数字。实践的采用将有助于促进一系列新的经过修改的日期格式,这些日期格式在数学上是等效的,同时在任何传统的日期格式中仍然易于识别和区分。那是:

  • 0MM-DD-YYYY,例如2016年2月3日为002-03-2016

  • DD-0MM-YYYY,例如2016年2月3日为03-002-2016

  • YYYY-0MM-DD,例如2016-02-03的2016-002-03

  • YYYY-DD-0MM,例如2016-03-002(如果有人想使用它!)

用这种方式修复它似乎太容易了……我想简单只是卖得不好。


2
我只能说:xkcd.com/927 我们已经有了日期的ISO标准,不需要另一个标准。
西蒙B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.