是否可以在不转换为UTC的情况下格式化日期
Is it possbile to format a date without a conversion to UTC?
我想格式化一个日期/时间,以保持原始日期/时间。
我的问题是,如果我使用这个jquery代码:
var time = $.formatDateTime('M d hh:ii', new Date(2013-12-13T14:00:00Z));
结果是Dec 13 15:00 UTC
。
有什么建议吗?
时间字符串上的Z
明确表示日期/时间为UTC。(但JavaScript对此的看法很奇怪,即使它看起来像ISO-8601字符串,如果Z
不在那里,它仍然是UTC,而ISO-8601说它应该是本地时间。)
奇怪的是,JavaScript中没有基于字符串的机制,这是规范中的,用于在本地时间解析指定的日期/时间字符串格式。有两种方法,一种是根据规范,另一种不是,但我从未见过浏览器不这样做:
-
自己分析字符串。这是使用指定的
new Date(year, month, day, hour, minute, second)
构造函数:var str = "2013-12-13T14:00:00Z"; var parts = str.replace(/Z$/, '').split(/[-T:]/); var dt = new Date( parseInt(parts[0], 10), // Year parseInt(parts[1], 10) - 1, // Month (0 = Jan) parseInt(parts[2], 10), // Day parseInt(parts[3], 10), // Hour parseInt(parts[4], 10), // Minute parseInt(parts[5], 10) // Second ); var time = $.formatDateTime('M d hh:ii', dt);
-
依赖于未指定但非常常见的行为:然而,我见过的每个浏览器都会将
yyyy/mm/dd hh:mm:ss
(带有斜杠,而不是-
)解析为本地时间。因此:
var str = "2013-12-13T14:00:00Z"; str = str.replace(/-/g, '/').replace(/Z$/, '').replace(/T/, ' '); var time = $.formatDateTime('M d hh:ii', new Date(str));
同样,这并不是特定的行为,但我从未见过浏览器不这样做
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 如何在不刷新页面的情况下更新显示框
- 有没有一种方法可以在控制台关闭的情况下让console.log()在IE中记录消息
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 在我的情况下,如何进行http请求
- 在不知道深度或父属性的情况下从对象中删除属性
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- ROR:如何在不重新加载浏览器的情况下从控制器获取参数
- 如何在不影响其他元素的情况下扩展DIV
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- 在不移动内部文本的情况下缩放元素的效果
- 是否可以在不转换为UTC的情况下格式化日期
- 在 JavaScript 中给定时区字符串的情况下计算 UTC 偏移量
- JavaScript 日期对象,默认情况下它是否使用 UTC
- 如何在不更改日期/时间的情况下将 UTC 日期转换为 ISOString 格式