A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 桑托尔 中级黑马   /  2014-4-28 08:30  /  837 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 桑托尔 于 2014-4-30 09:40 编辑

听视频时听老师说过一句,所有计算机表示时间的方式,都是从历史上某一时点开始,算出现在距离那个时点一共过了多长时间,然后在通过已经过去的总时间算出当下的具体时期和时间。
这个函数是怎样的呢?我们能不能够自己来调用。求解答

2 个回复

正序浏览
本帖最后由 兰闻天 于 2014-4-28 08:46 编辑

具体时期和时间是通过time_t数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数:
typedef long time_t; /* 时间值 */    //即,time_t类型就是long int类型。

我们可以通过time()函数来获得到现在的秒数://即从1970年1月1日0时0分0秒到此时的秒数
time_t time(time_t * timer);

#include "stdio.h"
#include "stdlib.h"
#include "time.h"

int main(void)
{
    time_t lt;
    lt =time(NULL);
    printf("The Calendar Time now is %d\n",lt);
    return 0;
}
获得日期和时间
其中可以使用的函数是gmtime()和localtime(),这两个函数的原型为:
struct tm * gmtime(const time_t *timer);
struct tm * localtime(const time_t * timer);

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main(void)
{
    struct tm *local;
    time_t t;
    t=time(NULL);
    local=localtime(&t);
    printf("Local hour is: %d:%d:%d\n",local->tm_hour,local->tm_min,local->tm_sec);
    local=gmtime(&t);
    printf("UTC hour is:  %d:%d:%d\n",local->tm_hour,local->tm_min,local->tm_sec);
    return 0;
}

我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:

size_t strftime(

char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
void main( void )
{
    struct tm *newtime;
    char tmpbuf[128];
    time_t localTime1;
    time( &localTime1 );
    newtime=localtime(&localTime1);
    strftime( tmpbuf, 128, "Today is %A, day %d of %B in the year %Y.\n", newtime);
    printf(tmpbuf);
}


回复 使用道具 举报
时间戳是自 1970 年 1 月 1 日(08:00:00 GMT)至当前时间的总秒数
C语言操作时间有个time.h的头文件
引用头文件后可以使用好多处理时间的函数。楼主可以百度下这些方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马