【问题标题】:javascript date variable formatting - chrome vs safarijavascript日期变量格式 - chrome vs safari
【发布时间】:2013-01-14 11:25:27
【问题描述】:

我正在查询 vimeo 的 API 以获取我的视频的上传日期。我想知道为什么这适用于 chrome,但不适用于 safari,以及为该视频创建时间戳的正确方法是:

  var vimeoDate = videos[i].upload_date;
  var vidDate = new Date(videos[i].upload_date);
  var vidTime = vidDate.getTime();

  console.log('vimeoDate: ' + vimeoDate + ', ' + vidDate + ', ' + vidTime);
  //returns: "vimeoDate: 2012-06-07 13:47:08, Invalid Date, NaN"

您可以在此处看到返回无效日期的 JSFiddle:

http://jsfiddle.net/nPSqL/

为了简化这一点,您可以简单地获取此字符串:并在 safari 中运行它并失败:

console.log(new Date('2013-01-02 13:33:51'));

http://jsfiddle.net/nPSqL/1/

【问题讨论】:

  • 尝试:console.log('vimeoDate: ' +(typeof vimeoDate) +', ' + vimeoDate + ', ' + vidDate + ', ' + vidTime);.也许这实际上是一个约会。
  • typeof vimeoDate 返回字符串
  • 那么它应该可以工作......你是认真的,你的数组中的所有元素都返回字符串吗?提供更多代码或制作一个类似这样的 jsfiddle.net。
  • JS Fiddle: jsfiddle.net/nPSqL - 在 safari 中返回无效日期
  • 我发现了一些东西:stackoverflow.com/questions/4622732/…

标签: javascript date timestamp vimeo


【解决方案1】:

new Date('2012-06-07 13:47:08'); // works

因此,您给定的参数实际上必须具有日期类型。因为控制台打印日期。如果是约会,那么您正在尝试做类似的事情:

var date = new Date();
new Date(date); // doesn't work

这行不通。

要检查您的变量是否为日期类型,请尝试以下操作:

var isDate = function(date) {
    return Object.prototype.toString.call(date) === "[object Date]";
};

好的,找到解决方案http://jsfiddle.net/nPSqL/2/

new Date() using Javascript in Safari得到它

【讨论】:

    猜你喜欢
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多