相关疑难解决方法(0)

如何获得客户的确切当地时间?

无论客户端系统的时区如何,获取客户端本地时间的最佳方法是什么?我正在创建一个应用程序,我首先需要获取客户端访问位置的确切时间和日期.即使检测客户端系统的IP地址也有缺点,或者检测客户端系统的时区有时可能存在风险.那么,有没有什么方法可以真正可靠并且不容易出错,因为向客户显示错误的时间和日期是非常令人尴尬的.

javascript jquery timezone datetime geolocation

34
推荐指数
6
解决办法
12万
查看次数

Date.toLocaleString()的Chrome timeZone选项

我最近发现JavaScript有一个新的扩展.这增加了一些功能,可以在Date对象中toLocaleString,toLocaleDateStringtoLocaleTimeString功能. 参考这里.

我对timeZone支持IANA/Olson时区的选项特别感兴趣,例如America/New_YorkEurope/London. 目前仅在Google Chrome中支持此功能.

以前的建议是,要使用除UTC或您自己的本地时区之外的任何其他时区的JavaScript,必须使用库.但现在,它似乎开始直接纳入浏览器.所以现在你可以这样做:

new Date().toLocaleString("en-US", {timeZone: "America/New_York"})

// output: "7/4/2013 5:15:45 PM"
Run Code Online (Sandbox Code Playgroud)

要么:

new Date().toLocaleString("en-NZ", {timeZone: "Pacific/Chatham",
                                    timeZoneName: "long"})

// output:  "7/5/2013 9:59:52 AM GMT+12:45"
Run Code Online (Sandbox Code Playgroud)

要么:

new Date().toLocaleString("en-GB", {timeZone: "Europe/London",
                                    timeZoneName: "short"})

// output:  "4/7/2013 22:18:57 United Kingdom Time"
// (strange time zone name, but ok)
Run Code Online (Sandbox Code Playgroud)

这是非常酷,但我有几个问题:

  • 这是新标准的一部分吗?也许埋在ECMAScript 6的某个地方?或者它只是Chrome的自定义内容?
  • 为何只使用Google Chrome?它在其他地方是否受支持?是否有计划在其他任何地方支持它?
  • 我检查了使用Chrome的JavaScript运行时的node.js,但它在那里不起作用.为什么不?
  • 时区数据是否可以通过我列出的功能以外的任何其他方式访问?如果仅在格式化字符串时可用,则根据结果进行任何计算可能很困难.
  • 这主要关注输出,但我如何将其用于输入?有没有办法将构造函数中的时区传递给Date …

javascript timezone google-chrome internationalization ecmascript-intl

24
推荐指数
2
解决办法
2万
查看次数

过去的夏令时转换规则的JavaScript时区错误

2007年,我们改用夏令时的日子发生了变化.在此更改之前属于DST扩展范围内的任何日期都会在Chrome和Firefox中报告错误的时区偏移.这就像Firefox和Chrome没有注意到DST曾经有过不同日子的事实.

如果您运行以下脚本,它将报告240分钟的偏移量.这是不正确的,它应该报告300分钟.IE10正确地做到了这一点.有谁知道修复?

alert(new Date('11/04/2004').getTimezoneOffset());
Run Code Online (Sandbox Code Playgroud)

更新:

这是我刚刚攻击的一段有趣的代码(见下文).令人惊讶的是,除了IE,每个浏览器的大多数日期都有多远.将开始日期和结束日期与此进行比较:http://www.timeanddate.com/worldclock/timezone.html?n = 77&syear = 2000

我最后用我自己的getTimezoneOffset替换了Date的原型,它根据硬编码表计算它.这对我们有用,因为我们只在美国做生意.这是我能想象到的最糟糕的解决方案......

<!DOCTYPE html>
<html>
    <head>
        <title>Moment Test</title>
        <script src="http://cdnjs.cloudflare.com/ajax/libs/moment.js/2.0.0/moment.min.js"></script>
        <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
        <script>
var lastOffset = null;
var $tbody = null;
var endDate = new Date('01/01/2021');

function addDate(d) {
    if($tbody === null)
        $tbody = $('#dates');

    var offset = d.getTimezoneOffset();
    var s = '';
    if(lastOffset != offset) {
        if(lastOffset != null)
            s = '<tr style="background-color: red;">';
        lastOffset = offset;
    }
    else {
        s = '<tr>';
    }
    var m = …
Run Code Online (Sandbox Code Playgroud)

javascript firefox timezone google-chrome node.js

23
推荐指数
1
解决办法
9201
查看次数

如何将DateTime转换为不同的时区?

如何将DateTime转换为不同的时区?DateTime类具有两种方法.toLocal()和.toUtc()。但是,如果我想在其他时区显示时间。我该怎么做?

dart angular-dart

5
推荐指数
5
解决办法
2586
查看次数