目录
  • ⒈题目内容
  • ⒉题目要求
  • ⒊思考问题
  • ⒋解题思路
    • ¹time – 库函数
    • ²localtime – 库函数
  • ⒌程序代码 
    • ⒍代码运行结果
      • 总结

        ⒈题目内容

        输出系统的日期以及时间。

        在本代码当中只有一个main函数将各个控制命令保存在数组当中,然后适用循环语句设置一个死循环。在该循环当中让用户输入命令指令,并且判断用户输入的命令是否和数组当中存储的命令是否相同。如果它们是相同的,则执行相对应的内容。

        ⒉题目要求

        用户进行某一个操作需要输入一个命令,如果命令输入错误,系统会进行提示。

        当用户输入命令字符"0"会显示帮助信息。

        当用户输入命令字符"1"会显示系统日期。

        当用户输入命令字符"2"会显示系统时间。

        当用户输入命令字符"3"会执行退出系统。

        ⒊思考问题

        一:需要保证程序能够一直执行下去,等待用户的命令防止主函数结束。

        二:获取系统日期和系统时间。

        ⒋解题思路

        结构体struct tm当中的结构成员如下↓

        int tm_sec        分后的秒(0-61) 多出来的两秒是用来处理跳秒问题用的
        int tm_min        小时后的分(0-59)
        int tm_hour       午夜后的小时(0-23)
        int tm_mday       月中的天(0-31) 本月第几日
        int tm_mon        一月后的月数(0-11) 本年第几月
        int tm_year       1900年后的年数,要加1900表示那一年
        int tm_wday       星期日后的天数(0-6) 本周第几日
        int tm_yday       一月一日后的天数(0-365),本年第几日,闰年有366日
        int tm_isdst      夏令时标志(大于0的值说明夏令时有效,0说明无效,负数说明信息不可用)

        ¹time – 库函数

        描述

        C语言当中的库函数 time_t time(time_t *seconds) 返回自纪元 Epoch(1970-01-01 00:00:00 UTC)起经过的时间,以秒为单位。如果 seconds 不为空,则返回值也存储在变量 seconds 中。

        声明

        下面是 time() 函数的声明。

        time_t time(time_t *seconds)

        注→这个存储的类型是时间类型也就是time_t在我们获取系统日期之前我们需要定义一个时间类型的变量。

        参数

        seconds — 这是指向类型为 time_t 的对象的指针,用来存储 seconds 的值。

        返回值

        以 time_t 对象返回当前日历时间。

        ²localtime – 库函数

        描述

        C 库函数 struct tm *localtime(const time_t *timer) 使用 timer 的值来填充 tm 结构。timer 的值被分解为 tm 结构,并用本地时区表示。

        声明

        下面是 localtime() 函数的声明。

        struct tm *localtime(const time_t *timer)

        参数

        timer — 这是指向表示日历时间的 time_t 值的指针。

        返回值

        该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息。

        ⒌程序代码 

        系统日期&时间 → 代码示例如下↓

        #define _CRT_SECURE_NO_WARNINGS 1
        #include<stdio.h>
        #include<time.h>
        #include<Windows.h>
        //结构体指针变量指向(->)的就是结构体类型当中成员变量
        struct tm* fun_Time;
        void color(short x)
        {
            if (x >= 0 && x <= 15)
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
            else
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
        }
        void menu()
        {
            color(0);       
            system("cls");    
            color(10);
            printf("|---------  系统&时间 --------|\n");
            printf("|-------★ 1.系统日期 ★------|\n");
            printf("|-------★ 2.系统时间 ★------|\n");
            printf("|-------★ 3.退出系统 ★------|\n");
        }
        void Time()
        {
            time_t Time;//定义时间类型
            time(&Time);//获取系统日期
            //注:指针变量接收地址,在这里我们定义了结构体指针变量所以只需要用结构体指针当中变量用来存储地址即可。
            //struct tm* fun_Time = localtime(&Time);同理
            fun_Time = localtime(&Time);//转换为系统时间
        }
        int main(void)
        {
            const int date[4] = {0,1,2,3};
            int n = 0;
            printf("请输入[0]获取帮助信息:");
            while (1)
            {
                color(1);
                scanf_s("%d", &n);
                if (date[0] == n)
                    menu();
                else if (date[1] == n)
                {
                    Time();//时间属性
                    printf("系统日期:%d-%d-%d\n", 1900 + fun_Time->tm_year, fun_Time->tm_mon + 1, fun_Time->tm_hour);
                }
                else if (date[2] == n)
                {
                    Time();//时间属性
                    printf("系统日期:%d:%d:%d\n", fun_Time->tm_hour, fun_Time->tm_min, fun_Time->tm_sec);
                }
                else if (date[3] == n)
                {
                    printf("退出EXIT!\n");
                    break;
                }
                else
                    printf("你输入的指令错误,请重新输入:");
            }
            return 0;
        }
        

        ⒍代码运行结果

        ⒈获取信息 

        C语言系统日期和时间实例详解

        ⒉系统日期⒊系统时间⒋退出EXIT

        C语言系统日期和时间实例详解

        总结

        声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。