我使用Moment.js和Moment-Timezone框架,并且有一个显式为UTC时区的Moment.js日期对象。如何将其转换为浏览器的当前时区?
var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC");
var localDate = ???
如果我能找到用户的本地时区,那就没关系了。或者我想将日期对象转换为另一个只使用"本地时区"的数据对象,无论实际是什么。
答案 0 :(得分:108)
您无需为此使用时刻时区。主要的moment.js库具有使用UTC和本地时区的全部功能。
var testDateUtc = moment.utc("2015-01-30 10:00:00");
var localDate = moment(testDateUtc).local();
从那里你可以使用你可能期望的任何功能:
var s = localDate.format("YYYY-MM-DD HH:mm:ss");
var d = localDate.toDate();
// etc...
请注意,通过将testDateUtc
(moment
对象传递回moment()
构造函数,它会创建克隆。否则,当您致电.local()
时,它也会更改testDateUtc
值,而不仅仅是localDate
值。时刻可变。
另请注意,如果原始输入包含时区偏移量,例如+00:00
或Z
,则可以直接使用moment
进行解析。您不需要使用.utc
或.local
。例如:
var localDate = moment("2015-01-30T10:00:00Z");
答案 1 :(得分:13)
var dateFormat = 'YYYY-DD-MM HH:mm:ss';
var testDateUtc = moment.utc('2015-01-30 10:00:00');
var localDate = testDateUtc.local();
console.log(localDate.format(dateFormat)); // 2015-30-01 02:00:00
答案 2 :(得分:4)
这就是我的所作所为:
var timestamp = moment.unix({{ time }});
var utcOffset = moment().utcOffset();
var local_time = timestamp.add(utcOffset, "minutes");
var dateString = local_time.fromNow();
{{ time }}
是utc时间戳。
答案 3 :(得分:1)
使用utcOffset功能。
var testDateUtc = moment.utc("2015-01-30 10:00:00");
var localDate = moment(testDateUtc).utcOffset(10 * 60); //set timezone offset in minutes
console.log(localDate.format()); //2015-01-30T20:00:00+10:00
答案 4 :(得分:0)
获取用户时区的最佳方法是使用 moment-timezone
NativeTable = {
["test"] = {},
["LoadResourceFile"] = {}
}
local function OverWriteFunction(FuncName, Func)
local Base = [[ = function(...)
print("jaa")
end
]]
local Final = FuncName .. Base
return Final
end
for k, v in pairs(NativeTable) do
load(OverWriteFunction(k))()
end
这样您就可以将您的时间转换为本地时区特定时间