【问题标题】:Convert utc date time to local date time using JavaScript or jQuery使用 JavaScript 或 jQuery 将 utc 日期时间转换为本地日期时间
【发布时间】:2015-01-09 17:25:41
【问题描述】:

我将 UTC 日期时间存储在 SharePoint 列表中并在 c# 中获取它的值,从 1970 年 1 月 1 日开始转换为毫秒并将这些毫秒传递给 JavaScript 以获取日期对象。

但是当我创建一个日期对象时,它的值与 UTC 日期相同,我希望该值处于用户本地时区并反映他们的夏令时状态。

【问题讨论】:

  • 你能发布你目前拥有的代码吗?
  • 你怎么知道它仍然是UTC日期?你是如何“将这些毫秒传递给 JavaScript”的?
  • public static long Convert(DateTime from) { DateTime _jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // return System.Convert.ToInt64((from.ToUniversalTime() - _jan1st1970).TotalMilliseconds); LoggingService.LogError("from : " + from.ToString()); long ticks = (long)((from.ToUniversalTime().Ticks - _jan1st1970.Ticks) / 10000); LoggingService.LogError("ticks : " + ticks.ToString()); return ticks; }
  • 这是我将毫秒返回给 JavaScript 的代码
  • 这是我将毫秒转换为日期的代码 var dt = new Date(TestTime);其中 TestTime 是毫秒

标签: javascript jquery datetime utc


【解决方案1】:

您可以在javascript中使用TimezoneOffset,检查以下代码,

var d = new Date()
var n = d.getTimezoneOffset();

这样你就可以随心所欲地计算时间了。

如果您需要更多详细信息,请告诉我:)

【讨论】:

【解决方案2】:

当您在 Javascript 中创建新日期时,我假设您在客户端/客户端机器上创建它:

var d = new Date(millis);

无论您在何处构造 Date 对象,值在 UTC 中保持不变的概念是正确的,这只是您如何显示日期的问题:在 UTC 中还是在用户的本地时区中:

你可以运行这段代码来看看区别:

var local = date.toDateString() + ' ' + date.toTimeString();
var utc = date.toUTCString();
alert(local);
alert(utc);

请注意,无论您身在何处,millis 的值都是自 1970-01-01 00:00:00 UTC 以来经过的毫秒数。在地球的相对两侧调用 new Date().getTime() 应该返回相同的毫秒数。

【讨论】:

  • 警报(本地); - 显示存储在 SharePoint 列表中的相同日期和时间,它不被视为 UTC,而是作为本地时间返回,例如Mon Jan 12 2015 06:13:50 UTC+053 alert(utc) 返回存储在 SharePoint 列表中的值的 UTC 时间,例如2015 年 1 月 12 日星期一 00:43:50 UTC 我需要将 alert(local) 视为 javascript 中的 UTC 时间而不是本地时间。关于如何做到这一点的任何想法?
猜你喜欢
  • 2012-10-07
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2016-07-29
  • 2019-06-21
  • 2011-06-13
  • 2018-07-15
相关资源
最近更新 更多