java實現距離指定時間還有多少天
阿新 • • 發佈:2018-11-29
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; public class 距離指定時間還有多少天 { /** * 預設時區為北京時間 */ public static TimeZone DEFAULT_SERVER_TIME_ZONE = TimeZone.getTimeZone("GMT+08:00"); public static void main(String[] args) { // 輸入指定日期 long timeMillis = getTimeInMillis(2019, 2, 5, 0, 0, 0); Calendar current = Calendar.getInstance(TimeZone.getDefault()); current.setTimeInMillis(System.currentTimeMillis()); Calendar date = Calendar.getInstance(TimeZone.getDefault()); date.setTimeInMillis(timeMillis); long time = date.getTimeInMillis() - current.getTimeInMillis(); // 天 int day = Math.round(time / 1000 / 60 / 60 / 24); // 時 int hour = Math.round(time / 1000 / 60 / 60 % 24); // 分 int minute = Math.round(time / 1000 / 60 % 60); // 秒 int second = Math.round(time / 1000 % 60); System.out.println(String.format("%s天%s時%s分%s秒", day, hour, minute, second)); } /** * 設定年、月、日、時、分、秒,並轉換成時間戳 * * @param year * 年 * @param month * 月 * @param day * 日 * @param hours * 時 * @param minutes * 鍾 * @param seconds * 秒 */ public static long getTimeInMillis(int year, int month, int day, int hours, int minutes, int seconds) { Calendar calendar = Calendar.getInstance(); calendar.setTimeZone(DEFAULT_SERVER_TIME_ZONE); calendar.set(year, month - 1, day, hours, minutes, seconds); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); format.setTimeZone(DEFAULT_SERVER_TIME_ZONE); try { return format.parse(format.format(calendar.getTime())).getTime(); } catch (ParseException e) { e.printStackTrace(); return 0; } } }