【问题标题】:Date time custom format日期时间自定义格式
【发布时间】:2021-04-21 10:54:55
【问题描述】:

我有这样的约会

{
"date": "2021-08-05",
"start_time": "11:00:00",
"end_time": "12:30:00"
}

我需要制作像DD:MM:YYYY 00:00:00 - 00:00:00这样的格式

所以它就像05-08-2021 11:00:00 - 12:30:00

我知道我们可以这样解析日期

DateTime dt = DateTime.ParseExact(sDate, "dd/MM/yyyy",CultureInfo.InvariantCulture);

但是是否可以将日期转换为这种格式

DD:MM:YYYY 00:00:00 - 00:00:00

【问题讨论】:

  • 一个 .NET DateTime 只有一个时间实例。您必须为此创建一个用户定义的类型,并实现一个Parse 方法。
  • ^马克说的。我还建议覆盖 .ToString() 方法,以您想要的格式编写它。
  • 你有课吗,或者这是关于从 json 读取的?
  • 如何证明结束时间是“明天”?

标签: c# date datetime


【解决方案1】:

假设输入是下面的json。

{
"date": "2021-08-05",
"start_time": "11:00:00",
"end_time": "12:30:00"
}

为了阅读它,我们可以使用一个类,例如:

public class
{
  public DateTime date {get; set}
  public TimeSpan start_time {get; set}
  public TimeSpan end_time { get; set}
} 

要以您想要的格式打印它,您可以覆盖ToString() 方法:

public override string ToString()
   => $"{date.ToString("dd:MM:yyyy")} {start_time} - {end_time}";

顺便说一句。确保您的序列化程序配置为知道 2021-08-05 是指 8 月 5 日 还是 5 月 8 日

【讨论】:

  • 我将日期作为 DateTime 并用它来表示开始日期和时间。
【解决方案2】:

我的最佳建议是将不同的日期部分连接在一起,然后从中解析出日期时间。

值得一提的是,您必须在这里创建两个 DateTimes...

var start = sDate["date"] + sDate["start_time"];
var end = sDate["date"] + sDate["end_time"];

DateTime.TryParse(start, out DateTime startDate);
DateTime.TryParse(end, out DateTime endDate);

完成后,您可以以正确的格式输出日期:

var output = startDate.ToString("dd/MM/yyyy HH:mm:ss");
output += " - " + endDate.ToString("HH:mm:ss");

这应该会为您提供所需的输出格式。 高温

【讨论】:

  • "这应该可以得到你想要的输出格式" vs "我需要制作一个像 DD:MM:YYYY 00:00:00 这样的格式- 00:00:00" - 不完全是。日期分隔符不同,时间之间没有“ - ”。
  • @Fildor 现在开心吗?
  • 我知道,我有时很挑剔。感谢您的编辑!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多