c# - .net 在本地主机和 azure 网站之间输出不同的日期格式

标签 c# .net azure model-view-controller

我遇到一个问题,当我从 VS2013 运行 Web 应用程序时,它会提供一种日期格式,而当我解决部署在 Azure 上的问题时,它会提供一种完全不同的日期格式。

这是一个例子: 顶部:在 Azure 上运行;底部:从 VS 本地运行 /image/qGiZQ.jpg enter image description here

在浏览器中使用加拿大 (en-CA) 文化时会发生这种情况。

在出现在 UI 上之前,它们与所有其他数据一起作为字符串传递到自定义元素属性中,然后由 jquery 进行解析。

模型中的相关代码如下所示:

dynamic dynEffectiveStartDate
if (blah blah) 
{
     dynEffectiveStartDate = object.EffectiveStartDate.Value.ToString("MM/dd/yyyy");
}
else
{
     dynEffectiveStartDate = DateTime.Today.ToString("MM/dd/yyyy");
}
var dataStruct = new
{
     StartDate = dynEffectiveStartDate,
     EndDate = dynEffectiveEndDate,
     SomeStuff = anotherImportantDataString,
     DataStore = someMoreImportantData
};
…
someObject.serializedData = javascriptserializer.Serialize(dataStruct);
…

后来我在 UI 中使用 $.datepicker.parsedate("mm/dd/yy", value) 将当前值传递给适当的编辑器,但它崩溃了,因为有破折号斜线。通常我会使用 $.datepicker.setDefault($.datepicer.regional[cultureVariable]); 为用户设置 UI 中的日期格式,然后使用 ("getDate") 和 $。 datepicker.formatDate("mm/dd/yyyy") 在发布之前将其记录回自定义属性。

因此,即使浏览器为英国人或澳大利亚人显示 31/12/2014,我仍然会将 12/31/2014 发回我的 Controller 。

然而,en-CA 文化代码在本地执行一件事,在远程执行另一件事。据我所知, DateTime.Today.ToString("MM/dd/yyyy"); 返回格式“MM-dd-yyyy”,这很令人烦恼,因为我需要将其解析为真正的日期稍后再说。如果中国或其他地方的人使用该应用程序,不知道它是否会开始输出“dd-mm-yyyy”或“yyyy/mm/dd”。

如何确保后端提供我告诉它的日期格式?

最佳答案

这里有很多我能想到的问题
1. DateTime.Now - 这将为您提供不同的结果,具体取决于您将其部署到的位置。要解决此问题,请将时区保存在某些资源文件中或代码中的静态设置中,然后使用 DateTime.UtcNow.Add(*/时区差异*/)

2.您应该使用 DateTime.ToString(string,culture) see here 的重载。无论文化是什么,这都将使您的格式保持不变,因为现在您负责提供文化。所以现在您的代码应该类似于 .ToString("dd/M/yyyy", CultureInfo.InvariantCulture)

3. 使用文化相关格式将数据以 json 形式发送到 UI。 read this

4. 将文化相关的日期时间发送到 UI。只是我在项目中所做的一个建议是,我将 UTC 时间( ISO 8601 )发送到 UI,其中在 js 代码中更容易解析它,然后根据浏览器的时区更改它。如果没有这个,我将不得不猜测使用 IP 地址位置的用户的时区(完全不值得付出努力)。您可以仅使用 vanila js 轻松完成此操作,或者您可以使用一些 js 库(我使用的一个是 momentjs )

关于c# - .net 在本地主机和 azure 网站之间输出不同的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29288828/

相关文章:

c# - RegAsm dll 没有类型注册

c# - 文件大小超过长度

c# - 什么是 'this' 构造函数,它有什么用

c# - 如何将类元数据转换为 JSON 字符串

azure - 如何捕获 cli.azure.cli.core.azclierror : ResourceNotFoundError: in PowerShell

c# - 如何将用户的消息存储在表存储中? (微软机器人框架 SDK4 和 C#)

C# Newtonsoft JSON - 使用未知对象集合反序列化对象

c# - 复制一个文本文件

.net - 如何在样式中使用附加属性?

azure - 我如何获取其他 Azure Active Directory 组织的列表(我是使用 API(例如 Graph)的 guest 用户)