【编程】
根据Unix时间戳计算时间,不分大小月,每月30天,每年按360天计算。
开始时间1970/01/01 00:00:00,输入秒数,显示时间例如,输入:
2
1
12345678
输出
1970/01/01 00:00:01
1970/05/23 21:21:18
public static void main(String[] args) { countUnixTime(912345678); } private static void countUnixTime(long time) { int second = (int) (time % 60); int minute = (int) (time / 60 % 60); int hour = (int) (time / 60 / 60 % 24); int day = (int) (time / 60 / 60 / 24 % 30); int month = (int) (time / 60 / 60 / 24 / 30 % 12); int year = (int) (time / 60 / 60 / 24 / 30 / 12); Calendar calendar = Calendar.getInstance(); calendar.set(1970, 00, 01, 00, 00, 00); calendar.add(Calendar.SECOND, second); calendar.add(Calendar.MINUTE, minute); calendar.add(Calendar.HOUR_OF_DAY, hour); calendar.add(Calendar.DAY_OF_MONTH, day); calendar.add(Calendar.MONTH, month); calendar.add(Calendar.YEAR, year); System.out.println(calendar.getTime().toLocaleString()); }测试结果:1999-4-30 13:21:18
#include <iostream> #include <stdio.h> #include<stdlib.h> #include<string> using namespace std; string fun(long long second) { int year=1970; int month=1; int day=1; int hour=0; int minute=0; while(second>=60) { second-=60; ++minute; if(minute == 60) { ++hour; minute=0; if(hour==24) { ++day; hour=0; if(day==31) { ++month; day=1; if(month==13) { ++year; month=1; } } } } } char buff[]="1970/01/01 00:00:00"; sprintf(buff,"%d/%02d/%02d %02d:%02d:%02d",year,month,day,hour,minute,second); return buff; } int main() { int n; cin>>n; long long *second = new long long[n]; for(int i=0;i<n;++i) { cin>>second[i]; } for(int i=0;i<n;++i) { cout<<fun(second[i])<<endl; } return 0; }
#include <stdio.h> int unix_date(){ int input;
scanf("%d", &input); int year, month, day, hour, minute, second;
year = input/31104000;
month = input%31104000/2592000;
day = input%31104000%2592000/86400;
hour = input%31104000%2592000%86400/3600;
minute = input%31104000%2592000%86400%3600/60;
second = input%31104000%2592000%86400%3600%60;
printf("%04d/%02d/%02d %02d:%02d:%02d", 1970+year, 1+month, 1+day, hour, minute, second); return 0;
} int main() {
unix_date(); return 0;
}
import java.util.Scanner; public class Test { public static void main(String[] args) { long h = 61274880000L; //1970年=61274880000秒 Scanner scan = new Scanner(System.in); System.out.println("请输入秒数:"); int i = scan.nextInt(); long sum = h + i; System.out.println((sum/31104000)+"/"+String.format("%02d",(sum%31104000)/2592000+1)+"/"+String.format("%02d",sum%2592000/86400+1)+" "+String.format("%02d",sum%86400/3600)+":"+String.format("%02d",sum%3600/60)+":"+String.format("%02d",sum%60)); } }
package test;
import java.util.Scanner;
public class Unix {
public StringBuffer getUnix(int num) {
StringBuffer unix = new StringBuffer();
// 求秒数
int n = num % 60;
String ss = "";// 秒
if (n == 0)
ss = ":00";
else if (n < 10 && n > 0)
ss = ":0" + n;
else
ss = ":" + n;
num = (num - n) / 60;
// 求分钟数
n = num % 60;
String mm = "";// 分钟
if (n == 0)
mm = ":00";
else if (n < 10 && n > 0)
mm = ":0" + n;
else
mm = ":" + n;
num = (num - n) / 60;
// 求小时数
n = num % 24;
String HH = "";// 小时
if (n == 0)
HH = "00";
else if (n < 10 && n > 0)
HH = "0" + n;
else
HH = "" + n;
num = (num - n) / 24;
// 求天数
n = num % 30;
String dd = "";// 天数
if (n == 0)
dd = "/01";
else if (n < 10 && n > 0)
dd = "/0" + (n+1);
else
dd = "/" + (n+1);
num = (num - n) / 30;
// 求月数
n = num % 12;
String MM = "";// 天数
if (n == 0)
MM = "/01";
else if (n < 10 && n > 0)
MM = "/0" + (n+1);
else
MM = "/" + (n+1);
num = (num - n) / 12;
// 求年数
String yyyy = "";// 年数
n=num;
if (n == 0)
yyyy = "1970";
else
yyyy = "" + (n+1970);
unix.append(yyyy).append(MM).append(dd).append(" ").append(HH).append(mm).append(ss);
return unix;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int a[] = new int[n];
for (int i = 0; i < n; i++) {
a[i] = scanner.nextInt();
}
Unix unix = new Unix();
for (int i = 0; i < n; i++) {
System.out.println(unix.getUnix(a[i]));
}
}
}