首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将日期从webserver转换为C#,然后转换到javascript,在美国和伦敦的vs.服务器上会得到不同的结果

将日期从webserver转换为C#,然后转换到javascript,在美国和伦敦的vs.服务器上会得到不同的结果
EN

Stack Overflow用户
提问于 2010-08-27 15:58:00
回答 3查看 1.6K关注 0票数 1

我有一个asp.net mvc日历应用程序(使用jquery数据报警器),我遇到了一种奇怪的情况,当我在美国web服务器上测试时,我看到了一个特定的日期,当我在伦敦的一个web服务器上测试时,我看到了一个不同的日期(之前的日期)。

以下是详细信息:

我在sql server中将日期存储为:

代码语言:javascript
运行
复制
 2010-09-16 00:00:00.000

然后将其加载到C# DateTime对象中。

我需要将它作为json对象的一部分传递给我的客户端javascript,因此我被建议采用以下解决方案:

代码语言:javascript
运行
复制
jsonobject.Date = UnixTicks(a.Date),

UnixTicks所在的地方:

代码语言:javascript
运行
复制
private static double UnixTicks(DateTime dt)
    {
        DateTime d1 = new DateTime(1970, 1, 1);
        DateTime d2 = dt.ToUniversalTime();
        TimeSpan ts = new TimeSpan(d2.Ticks - d1.Ticks);
        return ts.TotalMilliseconds;
    }

然后在客户端使用下面的代码将其转换为javascript日期:

代码语言:javascript
运行
复制
var d = new Date(jsonobject.Date);

有谁知道为什么给一个美国服务器或伦敦服务器,我会得到一个不同的日期。一开始,我以为是

代码语言:javascript
运行
复制
 DateTime d2 = dt.ToUniversalTime();

但我把它改成了:

代码语言:javascript
运行
复制
 DateTime d2 = dt;

仍然看到了同样的问题。(在伦敦web服务器上,日期将在美国web服务器前1天显示)

有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-27 16:00:41

如果您将本地时间存储在数据库中而不是UTC中,那么在转换回本地时间时可以得到不同的日期。在将日期提交到数据库之前,请确保将日期转换为UTC。如果您希望每个人总是看到相同的日期,无论他们在哪里,始终返回UTC日期-不要转换回当地时间。

票数 2
EN

Stack Overflow用户

发布于 2010-08-27 16:06:22

这绝对是本地化的问题。您需要将您的DateTime存储在相同的时区中,并说明不同的日期格式。例如,2010年9月1日在美国被格式化为"9/1/ 2010“,而在英国被格式化为"1/9/2010”。如果你认为这是一个美国约会,你将看到2010年1月9日。

票数 0
EN

Stack Overflow用户

发布于 2010-08-27 17:56:30

如果您只想完全忽略时区和本地化问题,只需将日期显示为应用程序的字符串:

代码语言:javascript
运行
复制
SELECT
    CONVERT(varchar(10),YourDatetimeColumn,111) AS StringDate1  --YYYY/MM/DD
   ,CONVERT(varchar(10),YourDatetimeColumn,121) AS StringDate2  --YYYY-MM-DD
    FROM ...

然后在应用程序中像常规字符串数据一样使用它们,它们不会为您更改或调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3586006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档