【问题标题】:how to convert MM/dd/YYYY hh:mm:ss AM to YYYY-MM-dd datetime format by linq?如何通过 linq 将 MM/dd/YYYY hh:mm:ss AM 转换为 YYYY-MM-dd 日期时间格式?
【发布时间】:2017-01-15 12:48:26
【问题描述】:

我有一个来自数据库的数据,其中包括一些列。其中之一是 ExpiryDate。它具有 SAP 日期时间格式:MM/dd/YYYY nn:mm:ss AM

我想将它从 MM/dd/YYYY hh:mm:ss AM 转换为 YYYY-MM-dd 。有可能吗?

   deliveriesItemsbypaging.Convert(q => q.ExpiryDate.ToString("yyyy-MM-dd")).Tolist() <DeliveryItem>;

使用 linq 可以吗?

【问题讨论】:

  • 如果是日期时间列,则不存储显示格式。
  • 您不需要转换。只需更改数据显示方式的格式。你如何显示 DataTime。
  • 此代码不起作用。 var query = DeliveriesItemsbypaging.Select(tb => tb.ExpiryDate) .AsEnumerable() // 在本地做剩下的处理 .Select(x => DateTime.ParseExact(x, "yyyy-MM-dd", CultureInfo.InvariantCulture ));
  • 您正在使用“数据集 vizualuser”查看日期。它决定日期的格式。如果你不喜欢它,转换成字符串并格式化。

标签: c# sql-server linq date datetime


【解决方案1】:

我有一个来自数据库的数据,其中包括一些列。其中之一是 ExpiryDate。它具有 SAP 日期时间格式:MM/dd/YYYY nn:mm:ss AM

根据我对问题的理解,您正在使用 SAP 进行数据存储,因此您必须使用 SAP 提供的 C# 提供程序来连接和获取数据。现在需要回答的重点是:

  1. 在 C# 中,您是否有一个 DateTime type 或一些 SAP DateTime type,它存储 DateTime,具有转换为 C# DateTime 的固有能力,我的假设是它的 C# DateTime 并且您希望它以格式表示 - @ 987654326@

现在查看 Microsoft here 提供的 DateTime 源代码

很明显,没有构造函数在任何地方使用 DateTime 格式,它只是填充内部属性,知道年、月和日期以及其他相关值,所以没有格式要求,主要是在表示过程中,我们称之为ToString method 在 DateTime 对象上,可以使相同的对象表示适当的格式,请查看以下 link 以了解可用的自定义格式。

但是,当我们将String 转换为DateTime 时,在Parse 方法中,有一个IFormatProvider 对象的选项,它可以在System.Globalization 命名空间中获取DateTimeFormatInfo 对象,可用于应用自定义/本地格式,查看源代码here,它可以帮助实现更复杂的需求。

格式化是为了表示的目的,可以在显示Ui中的值的同时进行,Linq与它无关。您可以使用或不使用 Linq 直接转换代码中的 DateTime 值,使用类似(测试代码)

DateTime d = DateTime.Now;  
var dateValue = d.ToString("yyyy-MM-dd")

请注意年份和日期的小写字母和月份的大写字母,这是正确答案的格式要求。

【讨论】:

    【解决方案2】:

    如果 ExpiryDate 是 DateTime 字段,您可以尝试

    List newDateFormat= DeliveriesItemsbypaging.Select(q => q.ExpiryDate.ToString("yyyy-MM-dd")).Tolist()

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 2019-06-18
      • 2023-03-15
      • 1970-01-01
      • 2016-11-06
      相关资源
      最近更新 更多