关于时间的操作(Java版)——将毫秒转换为年月日时分秒

        第一种方式:

import java.util.Calendar;
import java.util.TimeZone;

public class Test {

	/**
	 * 将毫秒转换为年月日时分秒
	 * 
	 * @author GaoHuanjie
	 */
	public String getYearMonthDayHourMinuteSecond(long timeMillis) {
	    Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));  
	    calendar.setTimeInMillis(timeMillis);
	    int year=calendar.get(Calendar.YEAR);
	    
	    int month=calendar.get(Calendar.MONTH) + 1;
	    String mToMonth=null;
	    if (String.valueOf(month).length()==1) {
	    	mToMonth="0"+month;
	    } else {
	    	mToMonth=String.valueOf(month);
	    }
	    
	    int day=calendar.get(Calendar.DAY_OF_MONTH);
	    String dToDay=null;
	    if (String.valueOf(day).length()==1) {
	    	dToDay="0"+day;
	    } else {
	    	dToDay=String.valueOf(day);
	    }
	    
	    int hour=calendar.get(Calendar.HOUR_OF_DAY);
	    String hToHour=null;
	    if (String.valueOf(hour).length()==1) {
	    	hToHour="0"+hour;
	    } else {
	    	hToHour=String.valueOf(hour);
	    }
	    
	    int minute=calendar.get(Calendar.MINUTE);
	    String mToMinute=null;
	    if (String.valueOf(minute).length()==1) {
	    	mToMinute="0"+minute;
	    } else {
	    	mToMinute=String.valueOf(minute);
	    }
	    
	    int second=calendar.get(Calendar.SECOND);
	    String sToSecond=null;
	    if (String.valueOf(second).length()==1) {
	    	sToSecond="0"+second;
	    } else {
	    	sToSecond=String.valueOf(second);
	    }
	    return  year+ "-" +mToMonth+ "-" +dToDay+ " "+hToHour+ ":" +mToMinute+ ":" +sToSecond; 		
	}

	public static void main(String[] args) {
		System.out.println(new Test().getYearMonthDayHourMinuteSecond(System.currentTimeMillis()));
	}
}

        第二种方式:

public class Test {

	/**
	 * 将毫秒转换为年月日时分秒
	 * 
	 * @author GaoHuanjie
	 */
	public String getYearMonthDayHourMinuteSecond(long timeMillis) {
		int timezone = 8; // 时区
		long totalSeconds = timeMillis / 1000;
		totalSeconds += 60 * 60 * timezone;
		int second = (int) (totalSeconds % 60);// 秒
		long totalMinutes = totalSeconds / 60;
		int minute = (int) (totalMinutes % 60);// 分
		long totalHours = totalMinutes / 60;
		int hour = (int) (totalHours % 24);// 时
		int totalDays = (int) (totalHours / 24);
		int _year = 1970;
		int year = _year + totalDays / 366;
		int month = 1;
		int day = 1;
		int diffDays;
		boolean leapYear;
		while (true) {
			int diff = (year - _year) * 365;
			diff += (year - 1) / 4 - (_year - 1) / 4;
			diff -= ((year - 1) / 100 - (_year - 1) / 100);
			diff += (year - 1) / 400 - (_year - 1) / 400;
			diffDays = totalDays - diff;
			leapYear = (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0);
			if (!leapYear && diffDays < 365 || leapYear && diffDays < 366) {
				break;
			} else {
				year++;
			}
		}

		int[] monthDays;
		if (diffDays >= 59 && leapYear) {
			monthDays = new int[] { -1, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 };
		} else {
			monthDays = new int[] { -1, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
		}
		for (int i = monthDays.length - 1; i >= 1; i--) {
			if (diffDays >= monthDays[i]) {
				month = i;
				day = diffDays - monthDays[i] + 1;
				break;
			}
		}
		return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
	}

	public static void main(String[] args) {
		System.out.println(new Test().getYearMonthDayHourMinuteSecond(System.currentTimeMillis()));
	}
}

关于时间的操作(Java版)——将毫秒转换为年月日时分秒,布布扣,bubuko.com

关于时间的操作(Java版)——将毫秒转换为年月日时分秒

上一篇:RocketMQ调优过程


下一篇:【RocketMQ】msgId与offsetMsgId