Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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#_.net_Time - Fatal编程技术网

C# 如何将秒转换为(年:月:日:小时:分钟:秒)时间?

C# 如何将秒转换为(年:月:日:小时:分钟:秒)时间?,c#,.net,time,C#,.net,Time,将秒转换为(年:月:日:小时:分钟:秒)时间的最佳方式是什么 DateTime date, date2; date = date2 = DateTime.Now; date2= date2.AddSeconds(959040000); var totaldays = (date2 - date).TotalDays; var totalHours = (date2 - date).TotalHours;

将秒转换为(年:月:日:小时:分钟:秒)时间的最佳方式是什么

DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;

假设我有959040000秒(1年5个月),在.NET中是否有任何专门的类/技术允许我将959040000秒转换为(年:月:日:小时:分钟:秒)像DateTime之类的东西?

使用TimeSpan类:

var ts = new TimeSpan(0, 0, 959040000);
int days = ts.Days;
int years = days / 365;
....
DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;

说实话,你不能,因为这取决于开始日期,即30天可能是1个月1天,或1个月2天,或少于一个月,或365天将少于一年,如果是闰年

DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;
但是,您可以使用:

TimeSpan diff = TimeSpan.FromSeconds(959040000);
string formatted = string.Format(
      CultureInfo.CurrentCulture,
      "{0} years, {1} months, {2} days, {3} hours, {4} minutes, {5} seconds",
      diff.Days / 365,
      (diff.Days - (diff.Days / 365) * 365)/30,
      (diff.Days - (diff.Days / 365) * 365) - ((diff.Days - (diff.Days / 365) * 365) / 30)*30,
      diff.Hours,
      diff.Minutes,
      diff.Seconds);

Console.WriteLine(formatted);
DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;
输出为:

DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;
30,5,0,0,0,0,0

DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;
如果输入
856044326
,输出将为:

DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;
27,1,22,22,5,26

DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;

这是另一个窍门。。您还可以使用时间跨度

DateTime date, date2;
           date = date2 = DateTime.Now;
           date2= date2.AddSeconds(959040000);
           var totaldays = (date2 - date).TotalDays;
           var totalHours = (date2 - date).TotalHours;
           var Totalmin = (date2 - date).TotalMinutes;
           var years = totaldays / 365;

是否要将它们添加到特定日期?或者创建时间跨度?我要转换年:月:日小时:分钟:秒。例如:1年:5个月:0天00:00:00格式如果您以Zdravko的答案为例,您必须自己将该字符串连接在一起。没有任何东西会自动为您设置格式。问题是一个月有多长?如果我在2月以2592000的值运行你的程序,我会得到“1个月,2天”吗?如果我在12月再次运行你的程序,我会得到“0个月,30天”吗?你最好使用
TimeSpan.FromSeconds
factory方法。
TimeSpan
TimeSpan中没有
Years
属性不提供月和年对不起。。。你是对的,没有月和年,但仍然是计算时间的正确方法spans@ZdravkoDanev你可以编辑你的答案,我会投我的反对票。我想:TimeSpan diff=TimeSpan.FromSeconds(9590450425)@用户3408674是的,它是相同的。我已经更改了代码,因为使用
FromSeconds
更合适。