【问题标题】:Getting DateTime in a format with spaces between them not slashes if possible如果可能,以它们之间有空格的格式获取 DateTime,而不是斜线
【发布时间】:2012-10-25 13:08:33
【问题描述】:

我正在尝试以这种格式获取日期

"yyyy MM dd"

它们之间的空格不是斜线,但它不起作用

   using (SqlDataReader r = sqlComm.ExecuteReader())
    {
          if (r.Read())
          {
              DateTime Date 
= Convert.ToDateTime((r["Date"]).ToString("yyyy/MM/dd"));

我根本无法对 SQL 存储过程进行任何更改

编辑

抱歉,它给了我上面的 "25 10 2012 10:00:00:00 AM" 或其他什么,所以我不认为我做得正确,我只想要日期这个“yyyy MM dd”

【问题讨论】:

  • 您是要以该格式显示日期还是以该格式解析日期?
  • or something 是什么意思?!?这是你得到的输出还是没有!?
  • @Dems 不确定零是否我会尝试再次调试它,它实际上会花费我很长时间才能真正做到

标签: c# sql datetime


【解决方案1】:

\改成太空怎么样?

.ToString("yyyy MM dd")

【讨论】:

    【解决方案2】:

    根据 Marc 的回答,您似乎对 DateTime 对象与 string 表示日期的实际工作方式有点困惑。 DateTime 只是从起点的偏移量。

    代码中的这一行首先从 SQL 阅读器中的 Date 列中获取值,然后将其转换为 "yyyy/MM/DD" 格式的字符串,最后将该字符串转换为 DateTime 对象。

    = Convert.ToDateTime((r["Date"]).ToString("yyyy/MM/dd"));

    如您所见,您最终会得到一个DateTime 对象,而不是您想要的显示string。如果您确实希望此代码仅返回格式化的 string ,那么您的最后一行应该是这样的:

    编辑

    = r.GetDateTime(r.GetOrdinal("Date")).ToString("yyyy MM dd");

    【讨论】:

    • 异常:错误 2 方法 'ToString' 没有重载需要 '1' 参数
    • 抱歉,有更好的处理方法。请查看编辑。
    【解决方案3】:

    从日期到字符串

    var str= date.ToString("yyyy MM dd")
    

    对于字符串到日期

    DateTime date = DateTime.ParseExact(string, "yyyy MM dd", CultureInfo.InvariantCulture);
    

    【讨论】:

      【解决方案4】:

      所以您想要这种格式:“yyyy MM dd”,但您使用的是“yyyy/MM/dd”。

      改为:

      String dateString = r.GetDateTime(r.GetOrdinal("Date")).ToString("yyyy MM dd");
      

      看:http://ideone.com/XecnUP

      【讨论】:

        【解决方案5】:

        DateTime没有格式。它只是“自 {epoch} 以来多久”,给予或接受一些偏移量/时区信息。如果源中的值一个日期时间,那么你只需要:

        DateTime date = (DateTime)r["Date"];
        

        然后您可以稍后在 UI 中对其进行格式化。但重复一遍:DateTime 没有格式

        【讨论】:

        • 对不起,但我看不出这个答案与 OP 的问题有什么关系。诚然,我可能是个菜鸟,但一个简单的 DateTime.ParseExact 正是他所要求的。
        • @tranceporter 因为 OP 接受了与ToString() 相关的答案,这与ParseExact完全相反:我不同意
        • @tranceporter:不,OP 正在将日期(或格式为日期的对象)解析为字符串,然后将其转换回日期时间对象。正如 Marc 所解释的,DateTime 没有格式,但可以在需要时使用 ToString 或 string.Format 方法(稍后在 UI 中)使用格式。
        • 不确定这是 OP 想要的,但我会接受你的假设。再一次,他试图将 ToString() 转换为 DateTime (Convert.ToDateTime((r["Date"]).ToString("yyyy/MM/dd"));),所以 ParseExact 并非完全不相关!
        猜你喜欢
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        • 2018-01-06
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多