c语言中如何将年月日时分秒值转为秒数用unsigned int类型存储起来?
想把比如:2014年09月04日11时01分20秒转化为秒用unsignedint类型存储起来。应该如何存储。用unsingedint能存储得下吗?附:若能将其存储为un...
想把比如:2014年09月04日11时01分20秒转化为秒用unsigned int类型存储起来。应该如何存储。用unsinged int能存储得下吗?
附:
若能将其存储为unsigned int,则之后又要怎么转化为年、月、日、时、分、秒???
多谢!
或者比如:
字符串20140904110120转为一个unsigned int来存储 展开
附:
若能将其存储为unsigned int,则之后又要怎么转化为年、月、日、时、分、秒???
多谢!
或者比如:
字符串20140904110120转为一个unsigned int来存储 展开
4个回答
展开全部
time_t mktime(
struct tm *timeptr
); 把日期转换成整型
struct tm *localtime(
const time_t *timer
); 把整型转换成日期
要注意int可能不够用,至少需要long, 看 time_t 的定义。
至于字符串,则需要你自己把它拆分成年月日时分秒等值,然后填充tm结构体,然后mktime。
这些函数已经考虑了用尽量少的字节数存储尽量大的时间范围,一个int的表达范围太有限了。
你想用一个小数来精确地表达一个大数,这怎么可能呢?
struct tm *timeptr
); 把日期转换成整型
struct tm *localtime(
const time_t *timer
); 把整型转换成日期
要注意int可能不够用,至少需要long, 看 time_t 的定义。
至于字符串,则需要你自己把它拆分成年月日时分秒等值,然后填充tm结构体,然后mktime。
这些函数已经考虑了用尽量少的字节数存储尽量大的时间范围,一个int的表达范围太有限了。
你想用一个小数来精确地表达一个大数,这怎么可能呢?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
time_t实际上就是一个长整型,你可以引入time.h头文件,直接使用这个,并且有一堆函数可以使用,转换之类的就不需要自己做了。
time函数是1970年1月1日0时0分0秒到该时刻的秒数(即日历时间),对time_t数据类型的值来说,它所表示的时间最晚到2038年1月18日19时14分07秒。
time函数是1970年1月1日0时0分0秒到该时刻的秒数(即日历时间),对time_t数据类型的值来说,它所表示的时间最晚到2038年1月18日19时14分07秒。
更多追问追答
追问
我不想用time_t,最好能做到跨平台。所以不用系统函数。而且我的要求是希望能纯粹把2014年09月04日11时01分20秒这个用一个unsigned int值表示,不想考虑那些1970。就把其存起来。
追答
time_t在win和unix下都支持,甚至大部分手机平台也支持,如果时间范围和精度足够,推荐你用这个。
32位系统下(目前只有这个能保证跨平台),uint是40亿左右的取值范围,可以表示130多年之内的范围(int是68年),因此你必须有一个基础时间,以此为基点进行时间表达,没有别的办法。
除非你用TM之类的结构体管理,或者用int64,这个位数足够了,可以用公元起点记录。
不使用time_t,那么所有转换函数必须自己做了,你需要计算闰年、然后累加天数,乘以3600*24秒,这样记录,其实方法和time_t没什么区别。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"C/C++,time()返值long类型,32位系统,与unsignedint度相等19701月10:0:0现秒数C/C++整套关time函数,time.h,基于秒数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询