【问题标题】:Localize DateTime in JavaScript在 JavaScript 中本地化日期时间
【发布时间】:2016-11-01 09:10:16
【问题描述】:

我在远程主机的 SQL Server 中存储了以下日期时间。

2016-11-01 14:46:26.133
//The above date time has been taken from below - 
DateTime utcDateTime = DateTime.UtcNow;
TimeZoneInfo BangladeshTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Bangladesh Standard Time");
now = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, BangladeshTimeZone);

我正在 C# MVC 应用程序中阅读此内容并通过 AJAX 以 json 格式发送给客户端 -

 List<VisitInfo> attendance = db.Query<VisitInfo>(selectSql).ToList();
 return Json(new { result = "success", data = attendance }, JsonRequestBehavior.AllowGet);

在客户端-

<td>' + $.date(new Date(parseJsonDate(item.VisitDate))) + '</td> 

我有以下辅助函数来处理 json 日期-

$.date = function (dateObject) {
    var d = new Date(dateObject);
    var day = d.getDate();
    var month = d.getMonth() + 1;
    var year = d.getFullYear();
    if (day < 10) {
        day = "0" + day;
    }

    var amPm = "am";
    var hours = d.getHours();

    if (hours >= 12) {
        amPm = "pm";
        hours = hours - 12;
    }

    if (month < 10) {
        month = "0" + month;
    }
    var date = day + "-" + month + "-" + year + " " + hours + ":" + d.getMinutes() + " " + amPm;
    return date;
};

function parseJsonDate(jsonDateString) {
    return new Date(parseInt(jsonDateString.replace('/Date(', '')));
}

当我在我的开发机器上运行它时它工作正常。但是当它在远程服务器上运行时(在不同的时区),它显示的时间不同。

在本地 PC 上运行时显示的日期时间 - 01-11-2016 2:46 pm。我想在任何地方都使用它。

从服务器运行时显示的日期时间 - 02-11-2016 1:46 am

有什么帮助吗?

【问题讨论】:

    标签: javascript json asp.net-mvc datetime


    【解决方案1】:

    您似乎在与服务器通信或写入数据库时​​去除了 UTC 偏移量,因此当您返回日期/时间时,您的浏览器认为它获得了 UTC 时间,因此它添加了另一个本地偏移量,因此时移。

    顺便说一句,您可能会从使用 momentjs (http://momentjs.com/docs/) 中受益。如果您这样做,您的日期方法可以更改为这样的:

    moment(dateObject).format("DD-mm-YYYY hh:mm a")
    

    这个库在处理日期时提供了广泛的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-18
      • 2011-11-17
      • 2016-08-21
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多