Linux时间和字符转换函数

//linux操作系统提供的时间操作函数。

时间操作函:
/*
 *  date +%s -d '2004/06/04 20:30:00'  //将时间转换成毫秒数。
 *  
   int gettimeofday(struct timeval *tv, struct timezone *tz);
   char *asctime(const struct tm *tm);
   char *asctime_r(const struct tm *tm, char *buf);

   char *ctime(const time_t *timep);
   char *ctime_r(const time_t *timep, char *buf);

   struct tm *gmtime(const time_t *timep);
   struct tm *gmtime_r(const time_t *timep, struct tm *result);

   struct tm *localtime(const time_t *timep);
   struct tm *localtime_r(const time_t *timep, struct tm *result);

 */


 struct timeval {

	time_t      tv_sec;     /* seconds */
	suseconds_t tv_usec;    /* microseconds */
};

time_t time(time_t *t);


truct tm {

	int tm_sec;         /* seconds */
	int tm_min;         /* minutes */
	int tm_hour;        /* hours */
	int tm_mday;        /* day of the month */
	int tm_mon;         /* month */
	int tm_year;        /* year */
	int tm_wday;        /* day of the week */
	int tm_yday;        /* day in the year */
	int tm_isdst;       /* daylight saving time */
};

int gettimeofday(struct timeval *tv, struct timezone *tz);
	   
//以上两个函数是用来获取当前系统时间的秒数的。 gettimeofday()方法可以获取当前系统时间的毫秒值。

//将该毫秒值转换成可读的字符格式日期的方法如下:

ctime(time_t * time); //直接输出当前本地时间字符串格式。

time()-->gmtime(time_t *time) --> 得到一个 struct tm{} -->asctime(tm *tm);得到时间格式化字符串。得到的时间不是本地时间。 

time()-->gmtime(time_t *time) --> 得到一个 struct tm{} -->strftime()  //得到一个自己格式话的一个时间字符串

gettimeofday()-->localtime(time_t *time)-->得到一个struct tm{}-->asctime(struct tm *t) //得到一个时间日期字符串。

gettimeofday()-->localtime(time_t *time)-->得到一个struct tm{}-->strftime(struct tm * t) //得到一个时间日期字符串

mktime(struct tm * t) //可以通过这个将tm结构提转换成一个time_t,当前时间的秒值。

下面是相关的程序demo:


#include<stdio.h>
#include<stdlib.h>
#include<sys/time.h>
#include<time.h>
void main(void)
{

    struct timeval t;
    int result;
    char *ct=NULL;
    char *asct = NULL;
    struct tm *t1 = NULL;
    char timearray[100] = {'\0'};
    struct timeb;

    result = gettimeofday(&t,NULL);
    if(result < 0 )
    {
        perror("gettimeofday()");
        exit(1);
    }
    ct = ctime(&t.tv_sec);    
    printf("ct = %s \r\n", ct);
    
    //ctime(time_t * t); 和localtime(time_t *t), mktime(tm) (strftime() 格式化字符输出时间。)
    //这四个函数都受到环境变量TZ的影响。
    t1 = gmtime(&t.tv_sec);    
    
    t1 = localtime(&t.tv_sec);

    printf("t1->hours = %d",t1->tm_hour);
//    strftime(timearray, 100, "%Y-%m-%d %H:%M:%S", t1);
    
//    strftime(timearray, 100, "%Y-%m-%d %X", t1);

//    strftime(timearray, 100, "%Y-%m-%d %T", t1);
    strftime (timearray,sizeof(timearray),"Now is %Y/%m/%d %H:%M:%S",t1);

    printf("%s \r\n",timearray);
        
    asct = asctime(t1);
    
    printf("asct = %s", asct);
  
}




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值