[英]C# date format over 1 day
我正在尝试将日期格式设置为从现在开始到几秒钟,几小时甚至几天,类似于《部落冲突》的工作计时器,如下所示:
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(80000);
return dateTime.ToString("H'h' mm'min'");
实际上效果很好,我只有几分钟和几小时才能得到“ 22h 13min”。 如果我尝试用它打印几天,像这样:
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(80000);
return dateTime.ToString("d'd' H'h' mm'min'");
我将返回“ 1d 22h 13min”。 因此,例如,如果我尝试将1天转换为秒(86400秒),则此代码将返回2天,而不是1天。
我如何才能正确地解决此问题,而又不需花很多钱就可以在退货的第一天之前减去?
EDIT1:例如,一天的预期结果是:
System.DateTime dateTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0);
dateTime = dateTime.AddSeconds(86400);
return dateTime.ToString("d'j' H'h' mm'min'");
返回2d 0h 00min,而不是1d 0h 00min。
您的代码dateTime = dateTime.AddSeconds(80000);
会将值1/1/1970 10:13:20
分配给dateTime
变量,因此您将通过dateTime.ToString("d'd' H'h' mm'min'");
获得输出为1d 22h 13min
dateTime.ToString("d'd' H'h' mm'min'");
。 因此,如果要获取第二天,可以使用dateTime = dateTime.AddDays(1);
或将其添加为秒。 即, dateTime = dateTime.AddSeconds(86400);
"d"
格式说明符返回月份的天数。 由于您将1
天添加到1月1日,所以将是1月2日,这就是该说明符返回2
的原因。
如果我了解清楚,您可能想改用TimeSpan
。
TimeSpan ts = TimeSpan.FromSeconds(86400);
ts.ToString("d'd 'h'h 'mm'min'"); // 1d 0h 00min
要么
TimeSpan ts = TimeSpan.FromSeconds(80000);
ts.ToString("d'd 'h'h 'mm'min'"); // 0d 22h 13min
然后,您可以格式化此值。
或者,您也可以使用DateTime.AddDays
方法将1天相减
dateTime = dateTime.AddDays(-1);
如果您确实想使用DateTime
则为您的dateTime
。
对于DateTime
,day是一个月中的一天。 您想要的是一个TimeSpan
。
var span = TimeSpan.FromSeconds(80000);
Console.WriteLine(span.ToString(@"d'd 'h'h 'm'min'"));
输出
0d 22h 13分钟
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.