C#日期转换从欧元时间转换为美国时间日期计算所需的时间

时间:2013-04-28 19:11:18

标签: c# .net string date

我有一个通过系统(从数据库)输入的日期为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格式以进行有效比较的帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

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

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

文化设置总是:Thread.CurrentThread.CurrentCulture。

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

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

相关问题