问题描述
有个日期时间转换问题,用下面两种方式都出错了。。在添加秒数时。。说是“要添加的值超出范围。参数名:value”DateTimedt=newDateTime(1970,1,1);dt=dt.AddSeconds(Convert.ToDouble(s));dt=dt.ToLocalTime();//转换为当地时间,差8小时DateTimedt=newDateTime(1970,1,1);TimeSpants=TimeSpan.FromSeconds(s);dt=dt+ts;dt=dt.ToLocalTime();//转换为当地时间,差8小时这个输入的参数值s=2829271927304753,也没超过double的范围,不知道怎么回事,求高手指点迷津啊——难道要把s分开加进去?因为s不大时,运行不会出错。
解决方案
解决方案二:
自己先顶下了好像没人碰到过这个问题啊
解决方案三:
用DateTime的最大值减去1970-1-1得到的是253402300800000而你的却是2829271927304753都大了一个数量级了,怎么可能不超出范围?
解决方案四:
引用2楼ojlovecd的回复:
用DateTime的最大值减去1970-1-1得到的是253402300800000而你的却是2829271927304753都大了一个数量级了,怎么可能不超出范围?
就是就是,给分给分
解决方案五:
你这是UNIX时间戳...Windows日历最大只支持到1万年减1秒,你要1万年以后干什么...
解决方案六:
引用2楼ojlovecd的回复:
用DateTime的最大值减去1970-1-1得到的是253402300800000而你的却是2829271927304753都大了一个数量级了,怎么可能不超出范围?
原来是这样啊外部dll返回的秒数就是这么大
解决方案七:
也就是说,那个秒数返回的是unix时间戳啊引用4楼vrhero的回复:
你这是UNIX时间戳...Windows日历最大只支持到1万年减1秒,你要1万年以后干什么...
解决方案八:
unix时间戳是毫秒级的C#的是100微秒级的
解决方案九:
谢谢s=2829271927304753dll函数返回值说明时,说返回的是和1970间的秒数,这么大的秒数,难道是为妙我不太懂啊引用7楼shaofei830927的回复:
unix时间戳是毫秒级的C#的是100微秒级的
解决方案十:
C#是没有什么时间戳的概念的...如果是指Windows计时周期,那也是100纳秒,比微秒还低一个级别...带毫微秒的UNIX时间戳是double值,UNIX时间戳跟Windows计时周期也没任何关系...你这个值虽然是128位的,但是显然不是个有效的double值...你这参数哪儿来的?如果就这一个出错那就是源的问题,跟你这边没关系...你本来也应该对输入值限定合法的范围,超出范围抛异常...谁出错谁解决,别都揽在自己身上...
解决方案十一:
引用9楼vrhero的回复:
C#是没有什么时间戳的概念的...如果是指Windows计时周期,那也是100纳秒,比微秒还低一个级别...带毫微秒的UNIX时间戳是double值,UNIX时间戳跟Windows计时周期也没任何关系...你这个值虽然是128位的,但是显然不是个有效的double值...你这参数哪儿来的?如果就这一个出错那就是源的问题,跟你这边没关系...你本来也应该对输入值限定合法的范围,超出范……
说得相当好啊。是个long型的数据,别人返回的。看来问题出在源头,我再问问
解决方案十二:
引用2楼ojlovecd的回复:
用DateTime的最大值减去1970-1-1得到的是253402300800000而你的却是2829271927304753都大了一个数量级了,怎么可能不超出范围?
+1
解决方案十三:
高手请教啊