Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中将日期时间(DD-MM-yyy-HH-MM-SS)转换为类似时间跨度(DD-MM-yyy-HH-MM-SS)的时间跨度#_C#_Datetime_String Formatting_Timespan - Fatal编程技术网

C# 在c中将日期时间(DD-MM-yyy-HH-MM-SS)转换为类似时间跨度(DD-MM-yyy-HH-MM-SS)的时间跨度#

C# 在c中将日期时间(DD-MM-yyy-HH-MM-SS)转换为类似时间跨度(DD-MM-yyy-HH-MM-SS)的时间跨度#,c#,datetime,string-formatting,timespan,C#,Datetime,String Formatting,Timespan,是否可以将DateTime值精确克隆为Timespan数据类型。我通过减去最小值将datetime转换为timespan。但是,它如何以DD-MM-yyy-HH-MM-SS格式显示 TimeSpan timeSpan = (DateTime)startTimeValue - DateTime.MinValue; 有点晚了但是因为你没有得到任何关注所以 是否可以将DateTime值精确克隆到Timespan数据 类型 好吧,因为您的示例从DateTime.MinValue开始就可以正常工作,因此

是否可以将DateTime值精确克隆为Timespan数据类型。我通过减去最小值将datetime转换为timespan。但是,它如何以DD-MM-yyy-HH-MM-SS格式显示

TimeSpan timeSpan = (DateTime)startTimeValue - DateTime.MinValue;

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

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

好吧,因为您的示例从
DateTime.MinValue
开始就可以正常工作,因此
0
作为
标记
。相当于,

TimeSpan timeSpan = TimeSpan.FromTicks(((DateTime)startTimeValue)Ticks);
它如何以DD-MM-yyy-HH-MM-SS格式显示

首先,没有
DD
YYYY
SS
作为一个整体。它们表示为
dd
yyy
ss

TimeSpan
DateTime
大不相同。它是一个时间间隔,但
DateTime
是一个时间点。如您所见,时间间隔不能包含任何月份和年份部分。在哪个
日历中
?并非所有的日历都有12个月。具体在哪个月?有多少个月有29天在
GregoriaCalendar
中?或
中国日历
?这要看情况,对吗?月和年的概念在时间跨度上是模糊的

但是,您仍然可以使用如下方法将
TimeSpan
格式化为日、时、分和秒

timeSpan.ToString(@"d\.hh\:mm\:ss")
作为更好的选择,您可以使用Nodatime,它具有类和枚举,您可以像这样计算它们

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
    }
}

为什么你会在意从公元1月1日午夜起经过的时间?您拥有的是日期和时间,而不是时间跨度,那么为什么不使用DateTime类型呢?特别是当您要将其转换为字符串时。可能需要将startTimeValue本身转换为“DD-MM-YYYY-HH-MM-SS”格式,并为此使用startTimeValue.toString(“DD-MM-YYYY-HH-MM-SS”)。如果没有,请解释您的要求,使其更清楚。我必须在db中插入datetime值,但db中的数据类型是作为Timespan提供的。我现在无法修改db类型,所以试图通过代码手动操作。它是什么数据库?您确定它需要的是.NET时间跨度,而不是自一个纪元以来的滴答数或秒数吗?