我有一个 Date
对象 . How do I render the title portion of the following snippet?
<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
我有另一个图书馆的"relative time in words"部分 .
我尝试过以下方法:
function isoDate(msSinceEpoch) {
var d = new Date(msSinceEpoch);
return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();
}
但这给了我:
"2010-4-2T3:19"
14 回答
'T'之后有一个''缺失'
应该这样做 .
对于前导零,您可以使用here:
像这样使用它:
已有一个名为toISOString()的函数:
如果,不知何故,你在a browser上没有让你满意:
请参阅第https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Global_Objects:Date页上的最后一个示例:
Web上几乎每个to-ISO方法都会在输出字符串之前通过应用转换为“Z”ulu时间(UTC)来丢弃时区信息 . 浏览器的原生.toISOString()也会删除时区信息 .
这会丢弃有 Value 的信息,因为服务器或收件人始终可以将完整的ISO日期转换为Zulu时间或其所需的时区,同时仍然可以获取发件人的时区信息 .
我遇到的最佳解决方案是使用 Moment.js javascript库并使用以下代码:
使用时区信息和毫秒获取当前ISO时间
获取具有时区信息但没有毫秒的本机JavaScript Date对象的ISO时间
这可以与Date.js结合使用以获取Date.today()等函数,然后将其结果传递给片刻 .
像这样格式化的日期字符串是JSON编译器,并且非常适合存储到数据库中 . Python和C#似乎喜欢它 .
提出的问题是ISO格式,精度降低 . 瞧:
假设需要尾随Z,否则只省略 .
如果您不需要支持IE7,以下是一个非常简洁的黑客:
最短但不受Internet Explorer 8及更早版本的支持:
我通常不喜欢在头脑中进行转换 . 要显示 local ISO日期,我使用以下功能:
上面的函数省略了时区偏移信息(除非本地时间恰好是UTC),所以我使用下面的函数在一个位置显示本地偏移量 . 如果您希望每次都显示偏移量,也可以将其输出附加到上述函数的结果中:
toLocalIsoString
使用pad
. 如果需要,它几乎可以像任何pad功能一样工作,但为了完整起见,这就是我使用的:toISOString的问题在于它只将datetime作为“Z” .
ISO-8601还定义了具有时区差异的日期时间,以小时和分钟为单位,形式如2016-07-16T19:20:30 5:30(当时区提前UTC时)和2016-07-16T19:20:30-01: 00(当时区落后于UTC时) .
我不认为使用另一个插件,moment.js来完成这么小的任务是个好主意,特别是当你能用几行代码获得它时 .
一旦你有以小时和分钟为单位的时区偏移量,你就可以附加到日期时间字符串 .
我在上面写了一篇博文:http://usefulangle.com/post/30/javascript-get-date-time-with-offset-hours-minutes
我只想使用这个小扩展
Date
- http://blog.stevenlevithan.com/archives/date-time-format我能够以非常少的代码获得低于输出 .
输出:
我在某处找到了Stack Overflow的基础知识(我相信它是其他一些Stack Exchange代码打包的一部分),我对它进行了改进,因此它也适用于Internet Explorer 10或更早版本 . 这很丑陋,但它完成了工作 .
用一些糖和现代语法扩展Sean的精彩和简洁的答案:
然后例如 .