首页 > 试题广场 >

根据Unix时间戳计算时间,不分大小月,每月30天,每年按3

[问答题]

【编程】
根据Unix时间戳计算时间,不分大小月,每月30天,每年按360天计算。
开始时间1970/01/01 00:00:00,输入秒数,显示时间
例如,输入
2
1
12345678
输出
1970/01/01 00:00:01
1970/05/23 21:21:18
java实现:
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
发表于 2019-09-08 14:16:28 回复(0)
#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;
}

发表于 2017-09-14 15:25:20 回复(0)
别的不知道,C语言%04d表示占四个位,位不够前面补前导零
发表于 2017-08-08 19:11:06 回复(1)
 
#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;
}
IntelliJ CLion运行结果:
D:\SOFTWARE\CODE\CLION\20170829\cmake-build-debug\20170829.exe
12345678
1970/05/23 21:21:18
Process finished with exit code 0
编辑于 2017-08-29 15:34:37 回复(0)
package main
import (
    "fmt"
    "time"
)
func main() {
    fmt.Println("input the amout of inputs")
    n := 0
    fmt.Scanln(&n)
    for i := 0; i < n; i++ {
        fmt.Println("input the seconds")
        var m int
        fmt.Scanln(&m)
        a := time.Unix(int64(m), int64(0))
        fmt.Println(a)
    }
}
发表于 2019-04-30 11:54:47 回复(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));
    }
}

发表于 2018-01-02 17:22:01 回复(0)
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]));
 }
 }
 
}

发表于 2017-08-08 23:10:21 回复(0)
关于如何补0 没什么头绪
发表于 2017-08-07 16:04:45 回复(0)