2013-04-25 80 views
10

有什么办法在JavaScript中获取系统短日期格式?JavaScript - 获取系统短日期格式

例如系统的短日期是否为美式格式,例如。 m/d/Y或在欧洲例如。 d/M/Y

请注意: 这不是格式化日期或基于地理位置计算它,而是从OS /系统

+0

你是问你是否能找出用户在其中一个他们屏幕的右下角?或者你问用户*应该根据他们的位置询问哪一个? – George 2013-04-25 08:40:43

+0

我不这么认为 – 2013-04-25 08:41:13

+0

嗨F4r-20。是的,我的意思是默认系统的时间 - 时钟也使用它。 – WooDzu 2013-04-25 08:44:48

回答

3

经过少量研究,我得出结论,从技术上讲,不可能获得区域设置 - 通过这种日期格式 - 但您可以做其他几件事。挑选其中一个选项:
一)已经提到-and outdated- “的toLocaleString()” 函数:

var myDate = new Date(1950, 01, 21, 22, 23, 24, 225); 
var myDateFormat = myDate.toLocaleString(); 
alert (myDateFormat);

问题:
1)你不能 “myDateFormat.replace” 来获得日期掩码根据语言环境(例如英语中的“February”,但是希腊语中的“Φεβρουάριος”以及谁知道例如Klingon中的内容),月份不会在字符串中存储为“01”,“02”等。
2)在不同浏览器上的行为不同
3)在不同的操作系统和浏览器版本上有不同的行为...

b)使用toISOString()函数代替toLocaleString()。您不会获得区域日期掩码,但会得到一个日期,从中可以知道日期的哪一部分(即“月”或“日”在哪个字符串中)。您还可以使用getUTCDate(),getUTCMonth()getUTCDay()功能。您仍然无法知道客户使用的日期格式,但可以知道您在获取日期时使用的年/月/日/等;使用上面的code来测试我在这里提到的函数,看看你能期待什么。

c)读取 Inconsistent behavior of toLocaleString() in different browser文章,并使用(恕我直言伟大的)解决方案描述有

+0

嗨马克,谢谢你的答案。我分享你的观点,但这仍然继续在浏览器 – WooDzu 2013-04-25 09:26:31

+0

如果你的意思是选项'c'是的,你是对的,这个问题被视为浏览器问题,但解决方案更通用。另一方面,如果我是你,我会和'b'一起去。如果必须知道日期格式掩码,还有另一种选择:“myDateFormat.replace(”1950“,”yyyy“);”等等 - 但是在一个月内,您需要找到字符串开始结尾并用“mm” - 这使得你的脚本有点太复杂,甚至可能为了你的目标... – 2013-04-25 09:31:01

+0

唯一的问题是,如果例如我的系统时钟,Excel电子表格和其他一些应用程序都使用d/m/Y和我的浏览器会因为某些原因检测到'en-US'(是的,它会这样),它会使用en-US格式,即m/d/Y – WooDzu 2013-04-25 10:15:38

0

越来越格式这是不可能的质疑。您可以从用户浏览器获取文化,并使用一些js库将其转换为正确的日期格式。 http://code.google.com/p/datejs/

+0

请参阅我的问题上的注释 – WooDzu 2013-04-25 08:56:18

+1

答案是否定的。这是不可能的,只是给你一些提示。 :) – Reno 2013-04-25 09:11:40

-1

使用Date.CultureInfo.formatPatterns.shortDate

+0

嗨。只是查了一下。您从哪里购买CultureInfo? Firefox和Chrome中的Date对象没有它 – WooDzu 2013-11-11 21:05:35

相关问题