2022.2 当前时刻的日期时间

本文介绍了一个C++程序,使用`time(0)`函数获取从1970年1月1日00:00:00GMT到现在的秒数,然后解析这个时间戳,输出当前的UTC时间(包括小时、分钟和秒)。程序还包含了闰年的判断方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用time(0)可以得到从格林尼治标准时间1970.1.1 00:00:00到当前时刻所流逝的总秒数

#include <iostream>
#include <cstdio>
using namespace std;


bool if_leap(int y);
void find_Date(int t, int& y, int& m, int& d, int& hour, int& minute, int& second);
int mon[13] = { -1,31,28,31,30,31,30,31,31,30,31,30,31 };
int main()
{
	int year = 1970, month = 1, day = 1, hour = 0, minute = 0, second = 0;
	char monthDay[13][5] = {"","Jan","Feb" ,"Mar" ,"Apr" ,"May" ,"Jun" ,"Jul" ,"Aug" ,"Seq" ,"Oct" ,"Nov" ,"Dec"};
	int t = time(0); //获取从1970年1月1日零点到现在多少秒
	find_Date(t, year, month, day, hour, minute, second);
	cout << "Current Time(GMT): ";
	printf("%d-%s-%02d,%02d:%02d:%02d", year, monthDay[month], day, hour, minute, second);
	return 0;
}

void find_Date(int t, int& y, int& m, int& d, int& hour, int& minute, int& second)
{
	int day_seconds = 24 * 3600;//每一天的秒数,86400
	int day_add = t / day_seconds; //距离今天的天数
	while (day_add > 365) //算年份
	{
		if (if_leap(y)) //是闰年,-366天
			day_add -= 366;
		else
			day_add -= 365;
		y++;
	}
	if (if_leap(y))  mon[2] = 29;
	while (day_add >= mon[m]) //同理,算月份
	{
		day_add -= mon[m++];
	}
	d = day_add + 1;//day_add是指从1970年1月1日开始增加的天数,所以要+1
	
	int sec = t % day_seconds; //具体一天过去了多少秒
	second = sec % 60; //当前秒
	minute = sec / 60 % 60; //分
	hour = sec / (60 * 60) + 8; //时(UTC时间要加时区8,考试的话应该不用,GMT就行,其实要求的也是GMT)
}

bool if_leap(int y) //判断是否是闰年
{
	if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
		return true;
	return false;
}

 

 UTC时间、GMT时间、CST时间(北京时间)、时间戳_utc时间戳-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值