【问题标题】:c# remove T and Z from datetimec# 从日期时间中删除 T 和 Z
【发布时间】:2021-10-13 22:57:45
【问题描述】:

网络核心应用程序。我有日期时间字段。我有一个将日期时间发送到 Azure 数据工厂的 API。每当我在 ADF 中看到时,我都会看到如下日期时间

"StartDateTime": "2018-01-11T00:00:00Z", "EndDateTime": "2019-12-09T00:00:00Z"

我对应的 c# 模型如下所示

 public DateTime StartDateTime { get; set; }
 public DateTime EndDateTime { get; set; }

在 ADF 中,我在日期时间字段中看到 T 和 Z。我不想要这个,我想要这样的东西

2018-01-11 00:00:00.

有人可以帮我格式化日期时间吗?任何帮助,将不胜感激。谢谢

【问题讨论】:

  • 什么是“ADF”?你为什么关心T和Z?里面有重要的信息。是不是有问题?
  • DateTime 本质上是一个 long ,因此它与如何格式化为字符串无关。发布的字符串表示对应于 ISO 8601 格式,DateTime.Parse 可以轻松解析该格式。当您需要将其显示为字符串时,您可以使用任何您想要的custom 格式。
  • 你使用什么包来发送/序列化你的模型?
  • 嗨,大卫。 ADF 是 Azure 数据工厂。在 ADF 中,我不想要 T 和 Z。

标签: c# asp.net datetime azure-data-factory


【解决方案1】:

打印日期时间时只需使用适当的格式说明符

var dt = DateTime.Parse("2018-01-11T00:00:00Z");
Console.WriteLine(dt.ToString("G"));

这将打印“1/11/2018 12:00:00 AM” 有关格式示例,请参见此处:https://docs.microsoft.com/en-us/dotnet/api/system.datetime.tostring?view=net-5.0#System_DateTime_ToString_System_String_

注意:此实际输出将取决于您的系统日期/时间格式首选项和当前时区。如果这对您不利,那么您可以明确指定您想要的格式,而不是 " G" 来自示例。如果需要,您还可以执行适当的时区转换。

【讨论】:

  • 在我的电脑上打印2018/01/11 10:30:00。现在这是基于我的时区以及日期和时间的偏好。您需要明确说明您的时区和打印出1/11/2018 12:00:00 AM 的偏好。
  • 是的,重要的一点,谢谢。我更新了答案。
【解决方案2】:

您正在处理的文本似乎采用 ISO 8601 标准格式。

要将文本解析为DateTime,您需要这样的内容:

string text = "2018-01-11T00:00:00Z";
DateTime dt = DateTime.Parse(text, CultureInfo.InvariantCulture, DateTimeStyles.None);

理想情况下,您应该使用DateTimeOffset,因为这样可以更好地处理时区。

DateTimeOffset dt = DateTimeOffset.Parse(text, CultureInfo.InvariantCulture, DateTimeStyles.None);

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 1970-01-01
    • 2018-11-03
    • 2022-12-09
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2012-11-23
    相关资源
    最近更新 更多