如果我这样做

// Default implementation of UNIX time of the current UTC time
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
string myResult = "";
myResult = Convert.ToInt64(ts.TotalSeconds).ToString();

myResult的最大字符串长度是多少,它总是相同的尺寸?

有帮助吗?

解决方案

INT64是一个签名的64位整数,这意味着它具有来自 −9,223,372,036,854,775,8089,223,372,036,854,775,807.

自从 toString 不用逗号格式化其输出,字符串的最长值为 −9223372036854775808 长20个字符。

现在,由于这代表UNIX时间戳,我们需要考虑将被视为“合理”返回日期的内容。当我写这篇文章时,当前的Unix时间戳将是接近的 1292051460, ,这是一个10位数字。

假设最大长度为10个字符,则可以从 -999999999999999999. 。这为您提供了一系列日期,从1966年10月31日星期一14:13:21 GMT”到“星期六,2286年11月20日17:46:39 GMT”。请注意,我将否定符号作为下限中的角色包括在内,这就是为什么下限比上限更接近时期的原因。

如果您不期望在1966年万圣节之前或2286年11月下旬之后,您可以合理地假设字符串的长度不会超过10个字符。如果您期望在此范围之外的日期(很可能是1966年前而不是2286年后),则可以期望看到11个字符字符串。我不会期待的。

就是这样 最大 期望的字符数;可能更短。

其他提示

假设代码在未来很远,它将是INT64的最大长度。

例如,现在该值为129202273,因此长度为10。

您可以在此处找到包含秒的计算器 http://www.timeanddate.com/date/duration.html

如果您坚持 Convert.ToInt64() 没有格式,那么您的最大长度将是 20, ,因为最低 Int64-9223372036854775808 (负号需要额外的字符)。但是,实际上,它不会利用由 Int64 由于限制 TimeSpanDateTime.

而且,不,长度 myResult 不会总是相同的,但可以从1到20。这仅取决于当前值 Convert.ToInt64(ts.TotalSeconds).

要获得时间pan的最大大小,请尝试使用此代码:

var maxValue = Convert.ToInt64(TimeSpan.MaxValue).ToString();

希望它能帮助您解决您的问题!祝你好运!

最好的问候,Dima。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top