【问题标题】:String Date To convert DateTime using ParseExactString Date 使用 ParseExact 转换 DateTime
【发布时间】:2018-07-11 14:32:32
【问题描述】:

我有一个字符串,它以 DD/MM/YYYY 样式出现。(例如:11/07/2018)

我需要将此转换为DateTime 格式和YYYY-MM-DD 样式。

我用DateTime.Parse试过了,但是不行

if (!String.IsNullOrEmpty(fromDate))
{
   frm = DateTime.ParseExact(fromDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None);
}
else if(!String.IsNullOrEmpty(toDate))
{
   todt = DateTime.ParseExact(toDate, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None);
}

【问题讨论】:

  • ParseExact() 带有 dd/MM/yyyy 的字符串,然后在生成的 DateTime 上调用 ToString() 以获得所需的格式(当然是字符串)。
  • @AlexK。最后我需要日期时间格式
  • 旁注:看来,你不想要else if,而是两个分开的if
  • DateTime 变量没有格式,格式仅在您将其视为字符串时适用,因此如果您想要特定格式,您确实需要字符串。
  • 正如 Alex 所说,DateTime 没有人类可读的格式。唯一存储的时间值是Ticks,其他的都是从Ticks计算出来的。

标签: c# jquery json asp.net-mvc


【解决方案1】:

你可以在一行代码中做到这一点。

var newDateString = DateTime.ParseExact(myDateString, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None).ToString("yyyy-MM-dd");

请记住,DateTime 实例是没有格式的数据结构。在处理日期和时间时,最好仅在需要呈现/输出值以供人类阅读时才恢复为人类可读的字符串。对于其他任何事情,包括对支持类型(如关系数据库)的存储系统的持久性,请将值保留为 DateTime 类型。

示例:如果您想要yyyy-MM-dd,因为您想将其持久化到 Sql Server,那么您应该在解析后停止(而不是调用 ToString)。然后,您可以将DateTime 实例直接分配给命令参数的Value 属性。

【讨论】:

    【解决方案2】:

    使用ParseExact 转换,然后使用ToString 转换为目标格式:

        string dateS = "30/04/2018";
        DateTime dateD = DateTime.ParseExact(dateS, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
        string dateS2 = dateD.ToString("yyyy-MM-dd");
    

    这是小提琴中的一个工作示例:https://dotnetfiddle.net/e0yuZ6

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      相关资源
      最近更新 更多