【问题标题】:How to convert 'dd-MM-yyyy' to 'yyyy-MM-dd'? [duplicate]如何将“dd-MM-yyyy”转换为“yyyy-MM-dd”? [复制]
【发布时间】:2016-10-17 15:04:16
【问题描述】:

我有一个 MySQL DateTime 列,我需要使用 C# 进行查询。问题是,当我尝试使用“dd-MM-yyyy”的 DateTime 格式查询列时,它不会带回任何数据,但是当我使用“yyyy-MM-dd”格式时它会返回。我想知道如何将我的 DateTime 转换为那种格式?

例如:

string yyyyMMdd = DateTime.Now.StartOfWeek(DayOfWeek.Monday).ToString("yyyy-MM-dd");

//Insert code to parse into yyyy-MM-dd DateTime format-

这得到了我想要的string 格式,但该列是DateTime,每次我尝试解析它时,它都会返回到“dd-MM-yyyy”格式。

伙计,堆栈溢出是如此善变。这个问题是不同的,因为我不是在问如何将 DateTime 格式化为不同的文化格式。我在问如何将 DateTime 从 'yy-MM-yyyy' 格式化为 'yyyy-MM-dd' 格式。

为什么投反对票?诚实地。

【问题讨论】:

  • 您不“解析日期时间”,而是对其进行格式化。解析是你对字符串所做的事情。 DateTime 值没有格式,将其转换为字符串的行为会选择一种格式。如果您希望以特定方式显示 DateTime 值,您需要控制格式。请澄清问题的真正含义。
  • 您根本不需要这样做,您应该使用参数化查询并将DateTime 作为参数传递...
  • 你的解决方案是错误的,不要浪费你的时间去做这件事。您的问题应该是如何将日期时间值解析为 SQL。
  • @AndrewKilburn - DateTime 没有“不同的文化”。 DateTime 只是一个值类型。只有当您从字符串转换或转换为字符串时才会涉及文化。 DateTime 的值只是保存在 private UInt64 dateData; 字段中。
  • @AndrewKilburn - 你得到了反对票,因为人们试图帮助你,但你的回应是“堆栈溢出是如此善变”和“呃”和“为什么反对票?老实说。”

标签: c# mysql datetime


【解决方案1】:

DateTime.Parse() 将尝试找出给定日期的格式,并且通常做得很好。如果您可以保证日期始终采用给定格式,那么您可以使用 ParseExact():

//string s = "2011-03-21";
string yyyyMMdd = DateTime.Now.StartOfWeek(DayOfWeek.Monday).ToString("yyyy-MM-dd");

DateTime dt = DateTime.ParseExact(yyyyMMdd , "yyyy-MM-dd", CultureInfo.InvariantCulture);

Source

【讨论】:

    【解决方案2】:

    你总是可以尝试使用:

    DateTime testdate = DateTime.Now;
    
    testdate.ToString("yyyy-MM-dd");
    

    只需将 DateTime 设置为您可能需要的任何日期和时间。

    【讨论】:

    • 否,因为这将返回一个字符串,而不是 DateTime
    • 这可能会帮助你MSDN link
    猜你喜欢
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多