-
08-10-2019 - |
题
如果我这样做
// 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,808
至 9,223,372,036,854,775,807
.
自从 toString
不用逗号格式化其输出,字符串的最长值为 −9223372036854775808
长20个字符。
现在,由于这代表UNIX时间戳,我们需要考虑将被视为“合理”返回日期的内容。当我写这篇文章时,当前的Unix时间戳将是接近的 1292051460
, ,这是一个10位数字。
假设最大长度为10个字符,则可以从 -99999999
至 9999999999
. 。这为您提供了一系列日期,从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
由于限制 TimeSpan
和 DateTime
.
而且,不,长度 myResult
不会总是相同的,但可以从1到20。这仅取决于当前值 Convert.ToInt64(ts.TotalSeconds)
.
要获得时间pan的最大大小,请尝试使用此代码:
var maxValue = Convert.ToInt64(TimeSpan.MaxValue).ToString();
希望它能帮助您解决您的问题!祝你好运!
最好的问候,Dima。