LoveStackover的博客

编程小子

系统相关信息和文件之时区相关实验(二)

1. 题目

Write a program to obtain the current time and print it using strftime, so that it looks like the default output from date(1). Set the TZ environment variable to different values and see what happens.

2. 代码展示

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <err.h>
#include <unistd.h>
#include <string.h>
int main(int argc,char ** argv)
{
      time_t t;
      int c;
      struct tm * tmp[2];
      char buf2[64];
      char str[64]="TZ=";
      char * cp=NULL;
      time(&t);
      while ((c = getopt(argc, argv, "t:")) != -1)
      {
            switch(c)
            {
                case 't':
                        cp=optarg;
                        break;
                case '?':
                        exit(-1);
             }
      }
      if(cp != NULL)
      {
            strcat(str,cp);
            if(putenv(str) != 0)
            {
                   perror("putenv:");
                   exit(-1);
            }
      }
      printf("TZ:%s\n",cp);
      tmp[1]= gmtime(&t);
      tmp[0]= localtime(&t);
      if (strftime(buf2, 64, "%a %b %d %X %Z %Y", tmp[0]) == 0)
          printf("buffer length 64 is too small\n");
      else
          printf("%s\n", buf2);
      if (strftime(buf2, 64, "%a %b %d %X %Z %Y", tmp[1]) == 0)
          printf("buffer length 64 is too small\n");
      else
          printf("%s\n", buf2);
      exit(0);
}

  结果如下:

[root@localhost ~]# date
Thu Mar 15 20:10:20 CST 2018
[root@localhost ~]# ./6_1
TZ:(null)
Thu Mar 15 20:10:29 CST 2018
Thu Mar 15 20:10:29 CST 2018
[root@localhost ~]# ./6_1 -a
./6_1: invalid option -- 'a'
[root@localhost ~]# ./6_1 -t
./6_1: option requires an argument -- 't'
[root@localhost ~]# ./6_1 -t America/New_York
TZ:America/New_York
Thu Mar 15 08:10:48 EDT 2018
Thu Mar 15 08:10:48 EDT 2018
[root@localhost ~]# ./6_1 -t Asia/Shanghai
TZ:Asia/Shanghai
Thu Mar 15 20:11:05 CST 2018
Thu Mar 15 20:11:05 CST 2018
[root@localhost ~]#

3. 结论

  已经成功的完成了题目的要求,并且拓展了option功能,可以很清楚的看到以下几点:

  • gmtimelocaltime在本实验中输出结果相同
  • 时区的设置将影响到strftime

NOTE :关于时区这里,网上的讨论还是蛮多的,虽然是一个小知识点,但是却是很多大型程序最基本的元素。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LoveStackover/article/details/79238307
个人分类: UNIX C编程
想对作者说点什么? 我来说一句

病毒实验报告

2013年05月30日 322KB 下载

查找怪物的相关信息分析二

2008年09月30日 381KB 下载

没有更多推荐了,返回首页

不良信息举报

系统相关信息和文件之时区相关实验(二)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭