簡體   English   中英

將日期轉換為以下格式:“ X年,X個月,X天……”

[英]Converting date to this format: “X years, X months, X days…”

我正在創建一個Calendar實例,並將日期設置為1997年7月1日,如下所示:

int currentYear = Calendar.getInstance().get(Calendar.YEAR); 
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(1997, 6, 1);

我想做的是,在不使用外部庫的情況下,從當前日期(例如,2015年11月1日02:45)開始,從該日期獲取以下輸出(正確計算of年/秒會是很好,但不是必需的) :30):

18年4個月0天2小時45分鍾30秒

我不太確定這是否可能。 我嘗試了一些奇怪的但不是很合乎邏輯的計算,這需要進行大量改進,但無法使其起作用:

int years = currentYear - calendar.get(Calendar.YEAR);
int months = calendar.get(Calendar.MONTH);

if(currentMonth > months) {
    years -= 1;
}

更新-到目前為止的代碼:

Calendar currentDate = Calendar.getInstance();
currentDate.clear();

Calendar birthDate = Calendar.getInstance();
birthDate.clear();
birthDate.set(this.birthYear, this.birthMonth - 1, this.birthDay);

Calendar date = Calendar.getInstance();
date.clear();
date.setTimeInMillis(birthDate.getTimeInMillis() - currentDate.getTimeInMillis());

System.out.println(Integer.toString(date.get(Calendar.YEAR)));

如果您使用的是Java 8,則可以使用LocalDateTime和PlainTimeStamp類

在這里您可以找到一些答案Java 8:計算兩個LocalDateTime之間的差異

這可能有幫助

    Calendar startCalendar = Calendar.getInstance();
    startCalendar.clear();
    startCalendar.set(1997, 6, 1);
    Date start = startCalendar.getTime();

    Calendar endCalendar = Calendar.getInstance();
    // endCalendar.clear();
    // endCalendar.set(2015, 10, 1);
    Date end = endCalendar.getTime();

    long diff = end.getTime() - start.getTime();

    long days = TimeUnit.MILLISECONDS.toDays(diff);
    long hours = TimeUnit.MILLISECONDS.toHours(diff) % TimeUnit.DAYS.toHours(1);
    long minutes = TimeUnit.MILLISECONDS.toMinutes(diff) % TimeUnit.HOURS.toMinutes(1);
    long seconds = TimeUnit.MILLISECONDS.toSeconds(diff) % TimeUnit.MINUTES.toSeconds(1);

    System.out.println(days + " " + hours + " " + minutes + " " + seconds);

從幾天開始,我們就可以編寫邏輯以使用模除法找到find年,月份的數量

Java 8有一個新的Date API您也可以嘗試使用,因為您使用的是Java 8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM