【问题标题】:How to figure out if the Date string contains time offset added already in Javascript?如何确定日期字符串是否包含已在 Javascript 中添加的时间偏移量?
【发布时间】:2013-02-05 19:44:26
【问题描述】:

考虑这个日期字符串:

"2012-08-20T15:00:00-07:00"

时间偏移添加为"-07:00" 我怎样才能知道它添加了这个偏移量? 我知道我可以用正则表达式来做到这一点。 但是还有其他更简单的方法吗?

或者有人有它的正则表达式吗?

【问题讨论】:

    标签: javascript regex date utc datetimeoffset


    【解决方案1】:

    我知道我可以用正则表达式来做到这一点,但是还有其他更简单的方法吗?

    我不这么认为,正则表达式是可用的最简单的模式匹配器。

    有人有它的正则表达式吗?

    我认为应该这样做:

    /[+-]\d\d:\d\d$/.test(datestring)
    

    如果你想解析它,使用

    var match = /([+-]?\d\d):(\d\d)$/.exec(datestring);
    if (match)
        return parseInt(match[1], 10)*60 + parseInt(match[2], 10)*(match[1].charAt(0)=="-"?-1:1);
    return 0;
    

    【讨论】:

    • 非常感谢!但它只适用于像这样的负偏移量 2012-08-20T15:00:00-07:00 而不是像这样的正偏移量 2012-08-20T15:00:00+ 07:00。我们可以解决这个问题吗?
    • 糟糕,我完全忘记了正偏移是如何格式化的。我以为是Z,但这实际上意味着零偏移。
    【解决方案2】:

    如果您的日期字符串始终具有相同的格式,您可以简单地使用.length 来检查是否添加了一些内容:

    var your_string = "2012-08-20T15:00:00";
    if(your_string.length > 19) {
        // offset added
        // offset = your_string.substring(19);
    } else {
        // no offset added
    }
    

    无论如何,我建议使用(new Date).getTime(),它返回自 01.01.1970, 0:00:00h UTC 以来的毫秒数。这更容易计算...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      相关资源
      最近更新 更多