c# 日期格式 - 英国和美国

Ric*_*ich 2 c# datetime

我不明白为什么我会发现这个问题。

我有一个简单的表格,DateTimePicker上面有一个(称为dtpStartDate)。我想要两个 DateTime对象:一个用于英国格式,一个用于美国格式。就像是:

 string str = "31/01/2018 10:00:00"; //dtpStartDate.Value.Date.ToString()

 DateTime dtUK = DateTime.ParseExact(str, "dd/MM/yyyy HH:mm:ss", null);
 DateTime dtUS = Convert.ToDateTime(dtUK, new CultureInfo("en-US"));
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我尝试过的任何方法都没有给我想要的东西,即两个 DateTime对象,而不是包含日期和时间的字符串。

非常感谢

小智 6

将 DateTime 对象视为:

public class DateTime
{
    public int Year;
    public int Month;
    public int Day;
    public int Hours;
    public int Minutes;
    public int Seconds;
    public int Milliseconds;
}
Run Code Online (Sandbox Code Playgroud)

这就是它存储的全部内容,它不包含任何与文化相关的信息。如果您要“针对英国格式和美国格式”创建两个 DateTime 对象,它们将是相同的并包含相同的数据。

但是,当您ToString()对 DateTime 对象调用该方法时,可以向其传递 CultureInfo 参数。该参数告诉 DateTime 对象如何将这些值输出到结果字符串中。

因此,对于带有 的 UK CultureInfo ToString(new CultureInfo("en-GB"),它输出一个包含 的字符串dd/MM/yyyy HH:mm:ss
对于带有 的 US CultureInfo ToString(new CultureInfo("en-US"),它输出一个包含 的字符串MM/dd/yyyy HH:mm:ss

希望这可以帮助