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来存储
展开
 我来答
泰山5000
推荐于2017-09-29 · TA获得超过294个赞
知道小有建树答主
回答量:514
采纳率:100%
帮助的人:129万
展开全部
C语言中时间本身就是用数值保存的, 但用的不是UINT而已.
它用的是time_t, 你可以在开发环境里找到它的定义, 会发现它是typedef long time_t
也就是说它是长整型的数据类型. 而在VC++6.0中, long和int的长度一样, 所以unsigned int是可以保存时间的, 但是一般就直接用time_t:
time_t time = time(0);
它们都在time.h中声明.
joychen_
2014-09-04 · TA获得超过1747个赞
知道大有可为答主
回答量:1617
采纳率:100%
帮助的人:1834万
展开全部
time_t mktime(
struct tm *timeptr
); 把日期转换成整型
struct tm *localtime(
const time_t *timer
); 把整型转换成日期
要注意int可能不够用,至少需要long, 看 time_t 的定义。

至于字符串,则需要你自己把它拆分成年月日时分秒等值,然后填充tm结构体,然后mktime。
这些函数已经考虑了用尽量少的字节数存储尽量大的时间范围,一个int的表达范围太有限了。
你想用一个小数来精确地表达一个大数,这怎么可能呢?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
推荐于2017-09-18 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4236万
展开全部
time_t实际上就是一个长整型,你可以引入time.h头文件,直接使用这个,并且有一堆函数可以使用,转换之类的就不需要自己做了。
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没什么区别。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-05-16 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1356万
展开全部
"C/C++,time()返值long类型,32位系统,与unsignedint度相等19701月10:0:0现秒数C/C++整套关time函数,time.h,基于秒数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式