我们正在使用facebook的API来获取一些帖子及其相应的日期,并将它们显示在我们构建的网站上。 facebook API将以以下格式返回日期:
2016-05-22T10:38:38+0000
我已确定为ISO 8601格式。直到最近,我们使用类似于以下的代码来提取mm / dd / yyyy格式的可读日期:
//created_time = '2016-05-22T10:38:38+0000'
var date = new Date(created_time).toLocaleDateString();
但是我们注意到这在iOS Safari中不起作用,并且所有解决方案都包括拆分字符串并将其解析为Date()函数。
我认为像这样简单而肮脏的东西应该有效:
var getDate = function(date) {
var day = date.substr(8, 2);
var month = date.substr(5, 2);
var year = date.substr(0, 4);
return [day, month, year].join('/');
}
但我的同事对其未来的证据有所保留。如果Facebook决定更改其日期返回的格式怎么办?完全有效的关注。那么有人可以推荐一种程序化的跨浏览器方法,从该字符串返回可读的dd / mm / yyyy格式日期吗?谢谢。
答案 0 :(得分:0)
如果您不知道字符串的格式,则无法自信地解析它。您可以猜测格式并生成日期,但即使您最终得到有效日期,您仍然不知道您是否正确解析了它。你应该手动解析字符串(一个库可以帮助,但如果你只有一种格式,一个简单的函数就足够了。)
以下内容将可靠地解析ISO 8601扩展格式的日期和时间字符串。
CSharpScript

以上内容可以减少到更少的代码,它的目的是易于阅读和维护,更多的代码并不一定意味着它比较短的版本慢(尽管缓存如果性能是一个问题,正则表达式将有所帮助。)