如何将Moment.js日期转换为用户的本地时区?

时间:2015-03-23 21:10:14

标签: javascript date timezone momentjs

我使用Moment.js和Moment-Timezone框架,并且有一个显式为UTC时区的Moment.js日期对象。如何将其转换为浏览器的当前时区?

var testDateUtc = moment.tz("2015-01-30 10:00:00", "UTC"); var localDate = ???

如果我能找到用户的本地时区,那就没关系了。或者我想将日期对象转换为另一个只使用"本地时区"的数据对象,无论实际是什么。

5 个答案:

答案 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...

请注意,通过将testDateUtcmoment对象传递回moment()构造函数,它会创建克隆。否则,当您致电.local()时,它也会更改testDateUtc值,而不仅仅是localDate值。时刻可变

另请注意,如果原始输入包含时区偏移量,例如+00:00Z,则可以直接使用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
  1. 定义您的日期格式。
  2. 创建一个时刻对象,并在对象上将UTC标志设置为true。
  3. 创建从原始时刻转换的本地化时刻对象 宾语。
  4. 从本地化的时刻对象返回格式化的字符串。
  5. 请参阅:http://momentjs.com/docs/#/manipulating/local/

答案 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

这样您就可以将您的时间转换为本地时区特定时间

相关问题