使用时刻将日期时间字符串格式转换为本地日期时间浏览器

时间:2017-04-25 13:36:03

标签: javascript momentjs

我尝试将dateTime字符串格式( dd / MM / yyyy HH:mm:ss )转换为本地用户时间。这段代码正在运行,但我认为使用 moment.js 可以写得更简单......但是,我不明白怎么做。

 $(document).ready(function () {
        $(".DateToLocalTime").each(function () {
            ConvertToLocalTime(this);
        });
    });

function ConvertToLocalTime(div) {
    debugger;
    var input = div.innerText;
    var formatedDate = moment(input, 'DD/MM/YYYY HH:mm:ss').format();
    var newDate = moment.utc(formatedDate).toDate();

    var offset = newDate.getTimezoneOffset() / 60;
    var hours = newDate.getHours();

    newDate.setHours(hours - offset);
    var formatedDateFinale = moment(newDate).format('DD/MM/YYYY HH:mm:ss');
    div.html(formatedDateFinale);
}

例如: 如果我有这个日期: 13/04/2017 09:30:'15 作为输入,那么:

  • formatedDate =“2017-04-13T09:30:15 + 03:00”
  • inputDate = Thu Apr 13 2017 09:30:15 GMT + 0300(GTB Daylight Time)
  • inputDate.getTimezoneOffset()= -180
  • offset = -3;
  • formatedDateFinale = '13 / 04/2017 12:30:15

如果你想帮助我,请提前多多谢谢。

1 个答案:

答案 0 :(得分:0)

看起来您正尝试使用特定的字符串格式从UTC转换为本地时间。

你想要手动做很多事情。时刻可以为你做到这一点。

// define the format
var fmt = 'DD/MM/YYYY HH:mm:ss';

// parse your input string as UTC, using that format
var m = moment.utc(input, fmt);

// convert to local time
m.local();

// create the output string in the same format
var result = m.format(fmt);

或者简单地说:

var fmt = 'DD/MM/YYYY HH:mm:ss';
var result = moment.utc(input, fmt).local().format(fmt);