将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 (DD MM YYYY HH MM SS)转换为类似于c#中的时间跨度(DD MM YYYY HH

有点晚了,但是因为你没有得到任何关注,所以…

是否有可能将DateTime值精确地克隆到Timespan数据类型

,因为你的例子完全有效,因为DateTime.MinValue0作为Ticks。它相当于;

TimeSpan timeSpan = TimeSpan.FromTicks(((DateTime)startTimeValue)Ticks);

如何以DD MM YYYY HH MM SS格式显示

首先,没有DDYYYYSS作为自定义日期和时间格式说明符。它们分别表示为ddyyyyss

TimeSpanDateTime有很大的不同。为时间间隔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
    }
}