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