【发布时间】:2012-06-05 12:27:09
【问题描述】:
我现在正在尝试将 Twitter 日期时间转换为本地 iso 字符串(用于 prettyDate)2 天。我只是弄错了当地时间..
我正在使用以下函数:
function getLocalISOTime(twDate) {
var d = new Date(twDate);
var utcd = Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(),
d.getMinutes(), d.getSeconds(), d.getMilliseconds());
// obtain local UTC offset and convert to msec
localOffset = d.getTimezoneOffset() * 60000;
var newdate = new Date(utcd + localOffset);
return newdate.toISOString().replace(".000", "");
}
在 newdate 中一切正常,但 toISOString() 再次将其扔回原来的时间...... 谁能帮我从 Twitterdate 中获取 iso 中的当地时间,格式为: 2012 年 5 月 31 日星期四 08:33:41 +0000
【问题讨论】:
-
你最后描述的格式不是ISO-8601E格式(另见Date.toISOString。你可以很容易地实现你想要的格式;它非常接近你用
dateObj.toString()得到的格式. 试试看。 -
谢谢!结束了: var d = new Date(twDate); return new Date(d.toISOString().replace("Z", "-02:00")).toISOString().replace(".000", "");不是最漂亮的解决方案,但适用于我的时区。
-
@Bergi:自相矛盾的是,旧问题不能与新问题重复;)
-
这是一个没有任何手动时区设置的方法: var now = new Date(); now.setMinutes(now.getMinutes() - now.getTimezoneOffset()); var timeToSet = now.toISOString().slice(0,16); var elem = document.getElementById("eventdate"); elem.value = timeToSet; elem.min = timeToSet;
标签: javascript datetime timezone-offset