【实用向】手把手教你用C语言实现专升本倒计时计算

笔记 / 2021-04-16

食用指南

阅读此文章只需要C语言基础即可。

共1470字,预计用时8分钟。

涉及到知识点

  • 函数
  • 头文件
  • 时间换算

读前知识

  • time.h 时间操作头文件
  • struct tm 时间信息结构体
  • time_t 用来记录从1970年到现在过了多少秒(时间戳)

time(NULL)

获取当前时间的时间戳

mktime

maketime 创建一个时间戳

localtime

当前时间戳

思路实现

思路

  1. 设定目标时间(2021-06-09)
  2. 获取当前时间
  3. (目标时间-当前时间)/3600/24

实现

1. 引入头文件

#include <stdio.h>
#include <time.h>

2. 设置目标时间

// 截止时间
time_t init(){
    time_t timep;
    struct tm* t;
    // 2021-6-9
    t = localtime(&timep);
    t->tm_year = 2021-1900;t->tm_mon = 6-1;t->tm_mday=9;
    t->tm_hour=0;t->tm_min=0;t->tm_sec=0;
    return mktime(t);
}

说明:这里的-1900,是因为C语言日期从1900年开始计算的。
定义时间信息结构体,然后设定值。最后通过mktime创建目标时间时间戳。

3. 获取当前时间

time_t now =  time(NULL);

固定写法没什么好说的

运算时间

int getRestDays(){
    time_t deadline = init();
    time_t now =  time(NULL);
    return (int)(deadline-now)/3600/24;
}

通过上面我们知道获取的时间戳单位是秒,所以我们需要换算成天。

完整代码

#include <stdio.h>
#include <time.h>
// 截止时间
time_t init(){
    time_t timep;
    struct tm* t;
    // 2021-6-9
    t = localtime(&timep);
    t->tm_year = 2021-1900;t->tm_mon = 6-1;t->tm_mday=9;
    t->tm_hour=0;t->tm_min=0;t->tm_sec=0;
    return mktime(t);
}

// 获取剩余天数
int getRestDays(){
    time_t deadline = init();
    time_t now =  time(NULL);
    return (int)(deadline-now)/3600/24;
}

int main(){
    int days = getRestDays();
    printf("距离专升本还剩%d天\n",days);
    return 0;
}

运行结果

距离专升本还剩52天

你以为故事到这里就结束了?

重头戏:使用wasm打包使我们的c程序运行到网页上

这里我们使用wasm实现

wasm介绍

操作步骤

emcc time.c -s WASM=1 -o time.html
emrun --no_browser --port 8080 .

image.png

运行效果

image.png

在线版

传送门