C#的Convert.ToDateTime函数是以“dd/mm/yyyy”还是“mm/dd/yyyy”格式读取日期?

7
C#的Convert.ToDateTIme函数是按照"dd/mm/yyyy"还是"mm/dd/yyyy"读取日期的?
我在本地机器上有一个应用程序,我将其上传到远程共享服务器上。在我的本地机器上,它可以完美地读取"dd/mm/yyyy"格式的日期,但在远程机器上,它似乎会将日期读取为"mm/dd/yyyy"格式。我在两台机器上都使用了相同的区域设置"en-GB"。
我发现这种日期转换非常不可预测。有人能推荐一种无需考虑区域设置即可从SQL Server 2005数据库中读取日期字符串的方法吗?

@Avinash:鉴于您拥有超过500分的声望,我期望您应该知道如何使用Markdown来正确格式化您的问题。http://stackoverflow.com/editing-help - Cerebrus
1
也许不是。Markdown页面上写着:“(大多数键盘的反引号键位于左上角。)”,但Avinash的文化不是美国。 - Windows programmer
1
@WindowsProgrammer: 我认为你非常错了。Avinash的“文化”几乎肯定是印度(和我一样),而美国键盘布局在印度是标准。此外,用户不仅限于使用键盘格式化问题,因为工具箱提供了相应的链接。当人们为无能力辩护时,我觉得这非常奇怪。 - Cerebrus
1
Avinish 告诉我们他在使用哪种文化。即使 Avinish 来自印度,看起来他/她在那里没有工作。但你可能对键盘是正确的,因为我好像记得中国的键盘有一半的字符排列方式与美国相同。因此,中国+印度+美国可能组成了世界上“大多数”键盘的来源。 - Windows programmer
始终使用YYYY-MM-DD格式。 - AK_
3个回答

4

听起来好像是服务器上的某个设置关闭了。

我会仔细检查“区域和语言”选项,确保没有覆盖任何设置,如果这样还不行。

您可以尝试明确设置Culture Info。

         string x = "21/01/2009";

        CultureInfo ci = new CultureInfo("en-GB");

        Convert.ToDateTime(x, ci);

3

为什么不直接使用datetime数据类型呢?然后,从您的sql数据读取器中使用:reader.GetDateTime(int column)

另一个选项:如果您必须传递日期字符串,请使用ISO格式:yyyy-MM-dd


2

SQL Server 中实际上如何存储日期?如果它们是以 datetime 存储的,则应该能够将它们作为 DateTime 值读取,而不需要使用 Convert.ToDateTime()。您可以向我们展示查询和/或 C# 代码吗?

编辑

你在问题的末尾提到了 SQL Server,这让我有些困惑!你考虑过使用 DateTimePicker 而不是 TextBox 吗?ASP.NET 有日期选择器控件,对吗?那么它可以为您进行解析。


我想要将文本框中的日期时间转换。在我的本地服务器上,我使用Convert.toDatetime("MM/dd/yyyy"),这个方法可以正常工作。但是在上传的服务器上却无法正常工作... - Avinash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接