繁体   English   中英

1天以上的C#日期格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM