【问题标题】:C# Date Conversion From Euro Time To en-US Time Needed For Date Calculations日期计算所需的从欧洲时间到美国时间的 C# 日期转换
【发布时间】:2013-04-22 09:54:26
【问题描述】:

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

【问题讨论】:

  • 抱歉,示例毫无意义 - 您将“25/01/13”作为DateTime.ToString 调用的格式规范传递...不确定您期望的结果。
  • 实际上来自数据库的值就是这种格式。为了简化,我只是这样列出来的

标签: c# .net string date


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      相关资源
      最近更新 更多