如何实现秒数和日期之间的转换

我想要进行对时方面的工作,先把日期转换为距标准时间的秒数,计算完成后在转化为日期(包括时分秒)。听说有库函数可以利用,具体哪个库,是time.h吗?怎么用啊?急求啊!给定... 我想要进行对时方面的工作,先把日期转换为距标准时间的秒数,计算完成后在转化为日期(包括时分秒)。
听说有库函数可以利用 ,具体哪个库,是time.h吗?怎么用啊?
急求啊!
给定年 月 日 时 分 秒 怎么转换为秒数,
给定秒怎么转换为年月日时分秒,最好直接给出基于C语言的函数。
展开
 我来答
Linyar
推荐于2017-11-26 · TA获得超过757个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:243万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/*************************************************************************
* @brief    : 日期这字符串转为秒数
* @inparam  : 
              |__ pszDate            2010/04/12/23/59/59、 2010-04-12 23:59:59类似字符串
* @outparam : NA
* @return   : 
              |__ time_t
*************************************************************************/
time_t DateStr2Sec(char* pszDate)
{
    struct tm tmDate = {0};
    tmDate.tm_year = atoi(pszDate) - 1900;
    tmDate.tm_mon = atoi(pszDate + 5) - 1;      // 注意月份是从0开始的
    tmDate.tm_mday = atoi(pszDate + 8);         // 月份日期是从1开始的
    tmDate.tm_hour = atoi(pszDate + 11);
    tmDate.tm_min = atoi(pszDate + 14);
    tmDate.tm_sec = atoi(pszDate + 17);
    return mktime(&tmDate);
}
/*************************************************************************
* @brief    : 时间转换成字符串
* @inparam  : 
              |__ iTime                时间戳
* @outparam : pszTime
* @return   : NA
*************************************************************************/
void TimeFormatInt2Str(int iTime, char *pszTime)
{
    time_t tCurrent;
    struct tm tmFmtDatetime;
    struct tm *ptmFmtDatetime = NULL;
    
    if(iTime == 0)
    {
        return;
    }
    tCurrent = iTime;
    ptmFmtDatetime = localtime_r(&tCurrent, &tmFmtDatetime);
    if (ptmFmtDatetime == NULL)
    {
        return;
    }
    sprintf(pszTime, "%04d-%02d-%02d %02d:%02d:%02d", 
        ptmFmtDatetime->tm_year+1900, 
        ptmFmtDatetime->tm_mon+1, 
        ptmFmtDatetime->tm_mday,
        ptmFmtDatetime->tm_hour,
        ptmFmtDatetime->tm_min,
        ptmFmtDatetime->tm_sec
        );
}
追问
请问你 这个是C语言吗 ?可不可以给出具体的注释?有些函数看不懂比如atoi?localtime_r?
追答
atoi和localtime_r你可以baidu一下啊。这些都是很基础的函数。
可以叫我表哥
推荐于2016-06-20 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
巧用date命令将秒数与日期互相转换。
例如有一个格林威治的秒值1318995200,需要将其转成具体的日期,可以用如下命令:

[root@mounix ~]# date "+%s"
1337651598
[root@mounix ~]# date -d "$((1337651598 - `date '+%s'` )) sec" +%Y-%-m-%-d
2012-5-22
[root@mounix ~]# date -d "2012-05-18 04:00:00" +%s
1337284800
[root@mounix ~]#
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式