根据它创建的时区显示日期 - JavaScript

时间:2015-08-25 11:51:47

标签: javascript date momentjs

假设在A国创建了一个事件, 而timeString是"2015-08-27T16:00:32+02:00" 一个人(我)希望看到事件的时间,但不是根据我当地的gmt,让我说我的是+05:00 ..我想向用户显示创建者的时区即

2015-08-27T16:00:32+02:00

简而言之,显示的时间应为4:00PM (according to +02:00),而不是7:00PM (according to +05:00)

有没有使用本机javascript Date对象或moment.js?

的解决方案

1 个答案:

答案 0 :(得分:0)

您应该在数据库中保存创建者的日期和时区。然后,当您必须显示它们时,您可以执行以下操作:

$(document).ready(function () {
    moment.tz.add('America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0');
    
    var date = moment('2015-08-27T16:00:32+02:00'); // Get date from db
    $('#date').html(date.format('LLLL')); // Display date using the browser's timezone
    var timezone = 'America/Los_Angeles';// Get timezone from db
    $('#newDate').html(date.clone().tz(timezone).format('LLLL')); // Clone the date, set the new timezone and display
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.4.0/moment-timezone.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<pre id="date"></pre>
<pre id="newDate"></pre>

在此示例中,您将从数据库中获取日期,并将其显示在上方框中。与往常一样,时刻会尝试使用浏览器的时区来显示日期。

然后从数据库中获取时区,设置新的时区,您可以看到日期在下方框中发生变化。

显然,此示例仅在您不在America/Los_Angeles时区时才有效。在这种情况下,你应该得到两个相等的字符串,这实际上是正确的行为,但它不允许你看到moment_timezone在行动。