根据它创建的时区显示日期- JavaScript
Show the date according to it's created timezone - JavaScript
假设在国家A创建了一个事件,timeString为"2015-08-27T16:00:32+02:00"
一个人(我)想看到事件的时间,但不是根据我当地的格林尼治标准时间,让我说我的是+05:00
…我想向用户显示创建者的时区,即
2015-08-27T16:00:32+02:00
总之,显示的时间应该是4:00PM (according to +02:00)
,而不是7:00PM (according to +05:00)
是否有使用原生javascript日期对象或moment.js的任何解决方案?
您应该在数据库中保存创建者的日期和时区。当你需要显示它们时,你可以这样做:
$(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>
在本例中,您从数据库中获取日期并将其显示在上面的框中。像往常一样,moment会尝试使用浏览器的时区来显示日期。
然后从数据库中获取时区,设置新的时区,您可以看到在下面的框中日期发生了变化。
显然,这个例子只有在您不在America/Los_Angeles
时区时才有效。在这种情况下,您应该得到两个相等的字符串,这实际上是正确的行为,但它不允许您看到moment_timezone的作用。
相关文章:
- 更新URL时使用Javascript函数显示日期
- 以datetime本地格式一个接一个地显示日期
- 单击复选框时显示日期选择器
- 使用外部 JavaScript 显示日期/时间
- 如何在 laravel 的页面上显示日期选择器
- 希望创建一个显示日期+5天和日期+10天之间交付的javascript
- 在谷歌图表折线图的x轴上显示日期,而不是时间戳
- 使用Angular.ui Datepicker没有显示日期
- 使用amCharts以x轴值显示日期
- 单击按钮时显示日期选择器
- 通过JavaScript显示日期
- 用格式显示日期
- 第一次单击时未显示日期选取器
- Highcharts日期时间轴,如何禁用时间部分(仅显示日期)
- 使用MomentJs显示日期时间,而无需进行时区转换
- 高图表(高库存):从外部 CSV 获取数据,无法正确显示日期
- 在两个地方显示日期差异
- 不显示日期日历
- 角度 ng 显示日期在时间范围内或不从
- jQuery dynamic Datepicker.我无法显示日期值