0

我有一个通过系统(从数据库)输入的日期,因为dd/mm/yy我需要以编程方式将日期转换为en-US格式,mm/dd/yyyy以便我可以在代码中进行一些日期计算。我到目前为止的代码是:

String myJames = "25/04/13" // Date String comes in as non-US date

String myJames2 = System.DateTime.Today.ToString(myJames); // I think the problem is here

DateTime d1 = Convert.ToDateTime(myJames2);
DateTime d2 = DateTime.Now;

TimeSpan t = d2 - d1;
double NrOfDays = t.TotalDays;

我知道这并不完全正确,尤其是在前几行中。任何将日期转换为一种 en-US 格式以进行有效比较的帮助将不胜感激。

4

2 回答 2

2

只是为了检查我理解你的问题。您有一个日期作为字符串,并且想要将该字符串转换为日期时间,以便可以在计算中使用它?你的问题是字符串不是运行代码的语言环境所使用的格式?

在这种情况下使用 DateTime.ParseExact。

DateTime d1 = DateTime.ParseExact(myJames,"dd/MM/yy");

这行代码将替换您声明和分配 d1 的行。分配给 myJames2 的行可以删除,因为它不需要。

于 2013-04-28T19:16:09.413 回答
1

每次从字符串转换或转换为字符串时,都会涉及到文化设置。

所以.. 如果您将 DateTime 转换为字符串,并且您的文化是 en-US,它将自动转换为:MM/dd/YYYY。

转换回来也是如此。如果将字符串转换回 DateTime,则文化设置用于查看字符串的格式。

文化设置始终是:Thread.CurrentThread.CurrentCulture。

大多数转换函数允许覆盖格式(如“MM/dd/yyyy”)和/或文化。因此,您可以创建自己的文化并在转换过程中使用它。

您说数据库使用 dd/MM/yy,但通常数据库中的 DateTime 没有格式化,它只是一个二进制值。还是以文本形式存储?如果它存储为文本,那么您应该始终使用正确的文化或格式将其转换为 DateTime。

于 2013-04-28T19:22:29.757 回答