Web服务器是否有标准方法可以确定用户在网页中的时区?
也许来自HTTP标头或user-agent字符串的一部分?
我一直在尝试使用JavaScript检测浏览器语言首选项.
如果我在IE中设置浏览器语言Tools>Internet Options>General>Languages,如何使用JavaScript读取此值?
Firefox的问题相同.我无法检测到tools>options>content>languages使用的设置navigator.language.
使用时 navigator.userLanguage ,它会检测通过Start>ControlPanel>RegionalandLanguageOptions>Regional Options选项卡完成的设置
.
我曾与测试navigator.browserLanguage,并navigator.systemLanguage但没有返回第一个设置的值(Tools>InternetOptions>General>Languages)
我找到了一个详细讨论这个问题的链接,但问题仍然没有答案:(
我将特定时区的日期时间作为字符串,我想将其转换为本地时间.但是,我不知道如何在Date对象中设置时区.
例如,Feb 28 2013 7:00 PM ET,我可以
var mydate = new Date();
mydate.setFullYear(2013);
mydate.setMonth(02);
mydate.setDate(28);
mydate.setHours(7);
mydate.setMinutes(00);
Run Code Online (Sandbox Code Playgroud)
据我所知,我可以设置UTC时间或本地时间.但是,我如何在另一个时区设置时间?
我试图使用添加/减去UTC的偏移量,但我不知道如何应对夏令时.我不确定我是否正朝着正确的方向前进.
如何在javascript中将时间从不同的时区转换为当地时间?
大家好我正在寻找一种方法来获取时间戳中的当前系统时间.我用它来获取时间戳:
new Date().getTime();
Run Code Online (Sandbox Code Playgroud)
但它以UTC时区返回时间而不是服务器使用的时区
有没有办法获得系统时区的时间戳?
我有一个数据库,其时间为UTC.这个时间可以在网页上显示,因此我被要求在页面中显示为本地时间,因为它可以从任何国家/地区查看.一位同事提到了从当前线程(在服务器上)获取国家/地区设置的一些内容,但我找不到任何有关此问题的详细信息.我想做什么?
一种方法是解析new Date().toLocaleString().但这在chrome/webkit中不起作用,因为它返回的字符串不依赖于用户的语言环境(请参阅http://code.google.com/p/chromium/issues/detail?id=3607上的错误报告)
我强调,我正在寻找一种只有客户端的解决方案,并且它在铬中起作用.
嗨 - 简单的问题 - 我只是想拿这个:
document.getElementById("time").innerHTML= new Date();
Run Code Online (Sandbox Code Playgroud)
并将其格式化为清晰可读的内容,如下所示:
May 18, 2011 7:45 AM
Run Code Online (Sandbox Code Playgroud)
确保它本地化为可能正在看到它的任何人.目前,它打印出来:
Wed May 18 2011 07:46:25 GMT-0400 (EDT)
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
嗯......好吧,我已经在网上搜索了 2 天,但没有任何运气。我已经看到很多关于如何格式化 javascript 日期的答案,例如 new Date().toString("yyyy-MM-dd") ... 它将返回类似 2013-04-05 的内容。
这绝对不是问题。
我想要的是可以设置我的操作系统显示日期的格式,然后检索该特定格式并将其显示在浏览器中。
例如,假设我将操作系统中的日期格式更改为 MM-yyyy/dd(这是为了争论,无论是否有效都无关紧要))。然后我希望在我的操作系统中看到 04-2013/05,对吗?接下来,我想通过 Javascript 在我的浏览器中检索此特定格式,以便我可以使用它来格式化整个网页中的日期。
如果这很疯狂并且无法完成,请告诉我,因为我因搜索而头疼。另外,如果你说使用someDateObject .toLocaleDateString() 而不解释为什么 .toLocaleDateString 会起作用,我将忽略它,因为我已经尝试将我的操作系统中的日期格式设置为多种格式,并且每次我使用.toLocaleDateString(),我收到相同的格式:dd/MM/yyyy
Chrome / Selenium 对于区域设置之间的某些输入类型似乎有不同的格式。例如,日期选择器(即input type="date")的格式与mm/dd/yyyy美国和yyyy-mm-dd加拿大相同。这使得编写适用于不同区域设置的机器的规范变得困难。例如:
find("input[type='date']").set("12/31/2016") # works for Canada, fails for America
find("input[type='date']").set("2017-12-31") # works for America, fails for Canada
Run Code Online (Sandbox Code Playgroud)
是否可以配置 Capybara / Selenium 以使用特定的区域设置/格式进行输入?或者,是否可以通过 JS 确定输入的格式并替换为 a page.execute_script(设置为input.val(new Date(2016, 12, 31))不起作用)?
假设我有一个可以用文化不变格式表示的日期(ISO 8601).
我将选择2009年7月6日,UTC时间下午3:54在巴黎,也就是当地时间下午5:54在巴黎观察夏令时.
2009-07-06T15:54:12.000 + 02:00
OK ...是否有任何隐藏的标记宝石会告诉浏览器将该字符串转换为它的本地化版本?
最接近的解决方案是使用Javascript的Date.prototype.toLocaleString().它确实做得很好,但迭代很多日期可能很慢,而且它依赖于Javascript.
是否有任何HTML,CSS,XSLT或其他语义标记,浏览器将识别并自动呈现正确的本地化字符串?
编辑:
我目前使用的方法是用本地化的字符串替换HTML元素的文本:
从...开始:
<span class="date">2009/07/06 15:54:12 GMT</span>
Run Code Online (Sandbox Code Playgroud)
使用Javascript(使用jQuery):
var dates = $("span.date", context);
// use for loop instead of .each() for speed
for(var i=0,len=dates.length; i < len; i++) {
// parse the date
var d = new Date(dates.eq(i).text());
// set the text to the localized string
dates.eq(i).text(d.toLocaleString());
}
Run Code Online (Sandbox Code Playgroud)
从实际的角度来看,当Javascript运行时,它会使文本"闪烁"到新值,我不喜欢它.
从原则的角度来看,我不明白为什么我们需要这样做 - 浏览器应该能够本地化标准的东西,如货币,日期,数字,只要我们这样标记它.
后续问题:为什么浏览器/ Web没有这么简单的功能 - 采用标准数据项,并根据客户端的设置进行格式化?
javascript ×8
localization ×3
html ×2
timezone ×2
asp.net ×1
browser ×1
capybara ×1
chromium ×1
css ×1
date ×1
date-format ×1
datetime ×1
locale ×1
node.js ×1
selenium ×1
time ×1
user-agent ×1
utc ×1
xslt ×1