【问题标题】:Parsing Datetime as yyyy-MM-dd H:mm:ss将日期时间解析为 yyyy-MM-dd HH:mm:ss
【发布时间】:2015-05-14 16:14:28
【问题描述】:

我的stringQuery 返回以下格式08/05/2015 15:21:40 的日期时间值,但我想以以下格式提取解析日期时间 - yyyy-MM-dd H:mm:ssdatetime 类型。

我尝试了以下代码变体,但我的 convert 变量始终将日期时间返回为 08/05/2015 15:21:40,而不是 2015-05-08 15:21:40

   var stringQuery = (from p in db.Database_CRE_Events
                    select new Loan()
                    {
                        cDate = p.LastUpdated

                    }).FirstOrDefault();

        if (stringQuery != null && stringQuery.cDate.HasValue)
       {               
           var ott = stringQuery.cDate.Value;
           tt = ott.ToString("yyyy-MM-dd H:mm:ss zzz");
           //format = dtt.ToString("yyyy-MM-dd H:mm:ss");
           //convert = DateTime.ParseExact(inp, "yyyy-MM-dd H:mm:ss", provider);

       }
        convert = DateTime.ParseExact(tt, "yyyy-MM-dd H:mm:ss zzz", new CultureInfo("en-US"));

请进一步建议,我可能会出错? 非常感谢

【问题讨论】:

  • tt 对象的类型是什么?
  • 它的string tt = "";
  • 08/05/2015 15:21:40 和 2015-05-08 15:21:40 是等价的。

标签: c# linq date datetime


【解决方案1】:

但我的转换变量不断返回日期时间为 08/05/2015 15:21:40,而不是 2015-05-08 15:21:40

convert 的类型为 DateTime与格式无关。您看到的可能是调试器以特定格式显示日期。

DateTime 仅存储为一个数字(记号),格式用于演示目的。

我什至不确定你为什么要尝试将DateTime 对象转换为字符串首先,然后将其解析回DateTime,只需使用原始DateTime 对象并使用字符串在任何需要显示的地方格式化。

【讨论】:

  • 如何在不将其转换为字符串的情况下格式化代码?另外,我要求日期时间显示为2015-05-08 15:21:40 格式,只是因为convert dateTime 类型在另一个只考虑日期时间类型的查询中进一步使用。
  • 抱歉,如果我的解释不够清楚。感谢您的回复和帮助。
【解决方案2】:

假设您希望 DateTime 是格式“yyyy-MM-dd H:mm:ss”末尾的字符串:

var myFormat = "yyyy-MM-dd H:mm:ss";

tt = "08/05/2015 15:21:40"
var dbFormat = "MM/dd/yyyy hh:mm:ss";

var result = DateTime.ParseExact(tt, format , null);
var formattedResult = result.ToString(myFormat);

但我想以以下格式提取解析日期时间 - yyyy-MM-dd H:mm:ss 作为日期时间类型。

08/05/2015 15:21:40 和 2015-05-08 15:21:40 相同。为 DateTime 类型设置不同的格式是没有意义的,除非您想将它作为字符串显示在某个地方,格式很重要。

【讨论】:

  • 感谢您的回复。如何将result 变量设为DateTime 类型?
  • 已经是DateTime 类型了。如果您想明确地将其设为DateTime,请将其声明为DateTime 而不是var。但无论哪种方式都是一样的。
  • 是的,我知道这个事实。但是,我需要将日期时间作为2015-05-08 15:21:40 传递给另一个linq 查询where clause,其中查询只识别日期时间值,例如'2015-05-08 15:21:40' 而不是08/05/2015 15:21:40
  • 在我看来,如果格式是一个问题,您的 LINQ 查询使用字符串而不是 DateTime 进行比较。也发布您的 LINQ 查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 2017-09-06
  • 1970-01-01
  • 2015-11-03
  • 2017-08-21
  • 1970-01-01
  • 2019-01-14
相关资源
最近更新 更多