将DateTime (DD MM YYYY HH MM SS)转换为类似于c#中的时间跨度(DD MM YYYY HH
本文关键字:MM HH DD YYYY 类似于 时间跨度 SS DateTime 转换 | 更新日期: 2023-09-27 18:01:39
是否可以将DateTime值精确地克隆为Timespan数据类型?我通过减去最小值将日期时间转换为时间跨度。但是,如何以DD MM YYYY HH MM SS格式显示呢?
TimeSpan timeSpan = (DateTime)startTimeValue - DateTime.MinValue;
有点晚了,但是因为你没有得到任何关注,所以…
是否有可能将DateTime值精确地克隆到Timespan数据类型
,因为你的例子完全有效,因为DateTime.MinValue
有0
作为Ticks
。它相当于;
TimeSpan timeSpan = TimeSpan.FromTicks(((DateTime)startTimeValue)Ticks);
如何以DD MM YYYY HH MM SS格式显示
首先,没有DD
、YYYY
和SS
作为自定义日期和时间格式说明符。它们分别表示为dd
、yyyy
和ss
。
TimeSpan
与DateTime
有很大的不同。为时间间隔, DateTime
为时间点。如您所见,时间间隔不能有任何月份和年份部分。哪个Calendar
?并不是所有的日历都有12个月。具体是哪一个月?GregorianCalender
中有多少个月有29天?还是ChineseLunisolarCalendar
?这要看情况,对吧?对于TimeSpan,月份和年份的概念是模糊的。
但是仍然,您可以使用TimeSpan.ToString()
方法将TimeSpan
格式化为日、时、分和秒,如;
timeSpan.ToString(@"d'.hh':mm':ss")
作为一个更好的选择,您可以使用nodeatime,它具有Period
类和PeriodUnits
枚举,您可以像计算这些;
using System;
using NodaTime;
public class Program
{
public static void Main()
{
LocalDate start = new LocalDate(2010, 11, 20);
LocalDate end = new LocalDate(2015, 7, 13);
Period period = Period.Between(start, end,
PeriodUnits.Months | PeriodUnits.Years);
Console.WriteLine("{0} - {1}", period.Months, period.Years); // 7 - 4
}
}