【问题标题】:Javascript DATE and C# date - what is the best solution?Javascript DATE 和 C# 日期 - 最好的解决方案是什么?
【发布时间】:2012-04-11 15:18:34
【问题描述】:

我正在使用以下代码从服务器端 C# 获取日期:

DateTime d1 = new DateTime(1970, 1, 1);
DateTime d2 = (DateTime)c.ccdTimestamp2;
long x = new TimeSpan(d2.Ticks - d1.Ticks).TotalMilliseconds;

当我在 javascript 端获取代码时:

function (timestamp) {
    alert("testing :" + new Date(timestamp))
}

这给了我一个完全格式化的日期,但它没有带来我的时区时间,因为如果这里是 17.15,它为我提供了 19.15 GMT +2!

起初我只是尝试传递我的 c# 时间戳,没有上面的任何代码并发现了这个问题:How do I format a Microsoft JSON date? 但我不知道 JSON 是什么,我无法推导出我能做什么!使用 JSON 更容易吗?如果是这样,任何人都可以指导我吗?非常感谢


编辑:解决方案 - 我没有在服务器端使用通用时间。我保留了服务器端代码。我所做的只是:

new Date(timestamp).toUTCString()

【问题讨论】:

  • 服务器和客户端是否位于不同的时区?

标签: c# javascript json datetime


【解决方案1】:

你应该做的是:

  • 始终在服务器上使用 UTC 时间
  • 像现在一样将 UTC 时间作为单位时间戳发送到浏览器
  • 在浏览器中将时间戳转换为本地时间

使用的时间戳代表:2012-04-11T15:46:29+00:00:

var d = new Date ( 1334159189000 );
// gives you back 2012-04-11T15:46:29+00:00 in a slightly different format, but the timezone info matches UTC/GMT+0
d.toUTCString();
// gives you back your local time
d.toLocaleString();

刚刚创建了一个 jsfiddle 来表明它做了它应该做的事情:
http://jsfiddle.net/t8hNs/1/

【讨论】:

  • 当我尝试使用我的 C# 滴答声时,它不起作用。时间刻度是:635834482125955879
【解决方案2】:

使用

var currentDate = new Date();
//get off set from your browser
var offset = Date.getTimezoneOffset();

【讨论】:

    【解决方案3】:

    你可以使用JavaScriptSerializer

    string json = new JavaScriptSerializer().Serialize(DateTime.Now);
    

    【讨论】:

    • 我什至无法引用 System.Web.Script... :/
    • @test 我看不出有什么方法可以帮助who can't even reference System.Web.Script :/
    • 很抱歉,我在“系统”选项卡下的参考资料中找不到它。还是我应该在其他地方搜索?
    • @test 点击我答案中的链接。它会显示你需要的命名空间和程序集
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2012-05-11
    • 2011-10-08
    相关资源
    最近更新 更多