VxWorks 系统时间时区设置

转发:

VxWorks 系统时间时区设置_xiao503的博客-CSDN博客_vxworks 设置系统时间

 https://blog.csdn.net/xiao503/article/details/38301821 

后面添加精确到微秒的处理代码。


 

#include <stdio.h>
#include <sys/types.h>
#include <time.h>
 
int main(void)
{
    time_t td;
    struct timespec stime;
    struct tm * ptime;
    struct tm * ptime2;
    char *ptr;
    
    /*将时区设置为0时区*/
    putenv("TIMEZONE=UTC::0::");
    time(&td);
    printf("initial:UTC == LCOAL:\n");
    printf("    UTC time = %s", asctime(gmtime(&td)));
    printf("  Local time = %s", asctime(localtime(&td)));
 
    /*通过clock_gettime函数获取1970年1月1日零点零分到当前时间的秒数(还有纳米)*/
    if (clock_gettime(CLOCK_REALTIME, &stime) == -1 ) 
    {
       perror("getclock");
       return 0;
    }
    
    
    /*通过clock_settime函数将系统的时间增加一个小时*/
    printf("add one hour use clock_settime:\n");
    stime.tv_sec += 3600; 
    if (clock_settime(CLOCK_REALTIME, &stime) == -1) 
    {
       perror("setclock");
       return 0;
    }
 
    time(&td);
    printf("   time(&td) = %d\n", td);
    printf("    UTC time = %d\n", mktime(gmtime(&td)));
    printf("  Local time = %d\n", mktime(localtime(&td)));
    printf("    UTC time = %s", asctime(gmtime(&td)));
    printf("  Local time = %s", asctime(localtime(&td)));
    printf("\n\n");
    
    
    /*将时区设置为东8时区,及北京时间,无夏令时*/
    printf("set the time zone to beijin:\n");
    putenv("TIMEZONE=CTT::-480::");
    time(&td);
    if (clock_gettime(CLOCK_REALTIME, &stime) == -1 ) 
    {
       perror("getclock");
       return 0;
    }
    printf("     UTC time = %d\n", mktime(gmtime(&td)));
    printf("clock_gettime = %d\n", stime.tv_sec);
    printf("    time(&td) = %d\n", td);
    printf("   Local time = %d\n", mktime(localtime(&td)));
    ptime = localtime(&td);
    printf("  beijin sec time = %d", mktime(ptime));
    printf("  beijin time = %s", asctime(ptime));
    printf("  %d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d\n", 
            ptime->tm_year, ptime->tm_yday, ptime->tm_mon+1, ptime->tm_mday, ptime->tm_wday,
            ptime->tm_hour, ptime->tm_min, ptime->tm_sec, ptime->tm_isdst);
 
    
    /*将时区设置为东8时区,及北京时间,从4月1日2点到10月1日2点为夏令时*/
    printf("set Daylight:\n");
    putenv("TIMEZONE=CTT::-480:040102:100102");
    time(&td);
    if (clock_gettime(CLOCK_REALTIME, &stime) == -1 ) 
    {
       perror("getclock");
       return 0;
    }
    printf("     UTC time = %d\n", mktime(gmtime(&td)));
    printf("clock_gettime = %d\n", stime.tv_sec);
    printf("    time(&td) = %d\n", time(&td));
    printf("   Local time = %d\n", mktime(localtime(&td)));
    ptime2 = localtime(&td);
    if(1 == ptime2->tm_isdst)
    {
        printf("  beijin sec time = %d", mktime(ptime2));
        printf("  beijin time = %s", asctime(ptime2));
        printf("  %d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d\n", 
                ptime2->tm_year, ptime2->tm_yday, ptime2->tm_mon+1, ptime2->tm_mday, ptime2->tm_wday,
                ptime2->tm_hour, ptime2->tm_min, ptime2->tm_sec, ptime2->tm_isdst);
        
        /*检验tm_isdst的值是否影响时间的显示*/
        ptime2->tm_isdst = 0;
        printf("set tm_isdst to 0:\n");
        printf("  beijin sec time = %d", mktime(ptime2));
        printf("  beijin time = %s", asctime(ptime2));
        ptime2->tm_isdst = -1;
        printf("set tm_isdst to -1:\n");
        printf("  beijin sec time = %d", mktime(ptime2));
        printf("  beijin time = %s", asctime(ptime2));
    }
    printf("\n\n");
    
    
    /*将时区设置为东8时区,及北京时间,无夏令时*/
    printf("set no Daylight:\n");
    putenv("TIMEZONE=CTT::-480::");
    time(&td);
    ptime = localtime(&td);
    printf("  beijin sec time = %d", mktime(ptime));
    printf("  beijin time = %s", asctime(ptime));
    printf("  %d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d,\t%d\n", 
            ptime->tm_year, ptime->tm_yday, ptime->tm_mon+1, ptime->tm_mday, ptime->tm_wday,
            ptime->tm_hour, ptime->tm_min, ptime->tm_sec, ptime->tm_isdst);
    printf("\n\n");
    
    return 0;
}
#include <vxWorks.h>
#include <stdio.h>
#include <taskLib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <time.h>
#include <sys/times.h>

int showtm(void)
{
	
	{
		int i=0;
		struct tm *t;
		struct timeval tv;
		struct timezone tz;
		while(i++<20)
		{
			gettimeofday(&tv, &tz);
			t = localtime(&tv.tv_sec);
			printf("time_now:%d-%d-%d %d:%d:%d.%ld\n", 
				1900+t->tm_year, 1+t->tm_mon, t->tm_mday, 
				t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec);
			taskDelay(sysClkRateGet()/2);
		}
	}
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值