1

我正在寻找这个确切问题的答案:How to format Facebook/Twitter dates (from the JSON feed) in Objective-C only in JS。

有推荐的方法吗?

从 Twitter 返回的日期如下所示: Wed Oct 17 21:22:27 +0000 2012 而从 FB 则如下所示: 2012-10-18T11:21:30+0000

我发现它们不包含 unix 时间戳非常奇怪(并且非常烦人),有人看到原因吗?

4

1 回答 1

4

日期字符串解析是一个非常常见的问题,肯定已经有答案了。无论如何...

如果日期格式为 2012-10-18T11:21:30+0000(几乎是 ISO8601)并且偏移量始终为 +0000(即 UTC),您可以使用以下方法创建合适的日期对象:

function isoStringToDate(s) {
  var b = s.split(/[-t:+]/ig);
  return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5]));
}

这将返回为该 UTC 时间设置的本地日期对象。请注意,这取决于用户系统设置为适当的时区。

Facebook 格式(Wed Oct 17 21:22:27 +0000 2012)格式可以类似地转换:

function fbStringToDate(s) {
  var b = s.split(/[: ]/g);
  var m = {jan:0, feb:1, mar:2, apr:3, may:4, jun:5, jul:6,
           aug:7, sep:8, oct:9, nov:10, dec:11};

  return new Date(Date.UTC(b[7], m[b[1].toLowerCase()], b[2], b[3], b[4], b[5]));
}

再次假设它总是 +0000 (UTC) 的偏移量。如果需要其他偏移量,可以在返回之前将其应用于创建的日期对象。

于 2012-10-30T05:24:29.470 回答