大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
时间戳是计算机中记录时间的一种方法,某一时刻的时间戳指的是从 1970 年 1 月 1 日 0 时 0 分 0 秒开始到该时刻总共过了多少秒。请编程任意输入一个整数,然后计算出它表示的是哪一天哪一刻。
问题分析
输入:任意整数 n(0≤n≤2147483647),表示从 1970 年 1 月 1 日 0 时 0 分 0 秒到该时刻过了多少秒。
输出:y 年 m 月 d 日 H 时 M 分 S 秒,y、m、d、H、M、S 为六个整数。
假设一年 12 个月,每个月有 30 天,那么:
一天的时间(秒)为:days = 24×60×60 = 86400 秒;
一个月的时间(秒)为:months = days×30 = 2592000 秒;
一年的时间(秒)为:years = months×12 = 31104000 秒;
2147483647=231-1,它是 32 位操作系统能够处理的最大的整型数。根据 n 的取值范围,定义变量 n 的数据类型应该为 long int 型。
n 除以一年的时间(秒)years 的商加上 1970 就是具体年份 y,余数再除以一月的时间(秒)months 的商加 1 就是月份 m,再次得到的余数除以一天的时间(秒)days 的商加 1 就是日期 d,第三次得到的余数除以 3600 的商就是小时数 H,第四次得到的余数除以 60 的商就是分 M 和余数就是秒 S。
y = n / years + 1970
m = n % years / months + 1
d = n % years % months / days + 1
H = n % years % months % days / 3600
M = n % years % months % days % 3600 / 60
S = n % years % months % days % 3600 % 60
图 1 展示了普通时间值和时间戳(秒单位的值)相互转换的过程。
图 1:普通时间值和时间戳(秒单位的值)相互转换
算法描述
代码清单 1:C语言程序源代码(时间戳)
#include
#include
int main( )
{
system(“color 70”);
long days = 24 * 60 * 60;
long months = days * 30;
long years = months * 12;
long n,y,m,d,HH,MM,SS;
printf(“输入整数 n(0-2147483647):”);
scanf(“%ld”,&n);
y = n / years + 1970;
m = n % years / months + 1;
d = n % years % months / days + 1;
HH = n % years % months % days / 3600;
MM = n % years % months % days % 3600 / 60;
SS = n % years % months % days % 3600 % 60;
printf(“\n%d年%d月%d日%d时%d分%d秒\n”,y,m,d,HH,MM,SS);
system(“pause”);
return 0;
}
运行结果为:
输入整数 n(0-2147483647):4464502
1970年2月22日16时8分22秒
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188115.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...