簡體   English   中英

如何從 Java 中的日期獲取世紀

[英]How to get Century from date in Java

如何從 Java 中的日期獲取當前世紀?

例如日期"06/03/2011"根據格式"MM/dd/yyyy" 如何使用SimpleDateFormat從該日期獲得當前世紀?

Date date = new SimpleDateFormat("MM/dd/yyyy").parse(yourString);

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

int century = (calendar.get(Calendar.YEAR) / 100) +1;

Harry Lime 發布的內容略有變化。 他的邏輯並不完全正確。 1901 年是 20 世紀,但 1900 年是 19 世紀。

public class CenturyYear {

    public static void main(String[] args) {
        int test = centuryFromYear(1900);
        System.out.println(test);

    }

    static int centuryFromYear(int year) {
        if (year % 100 == 0) {
            year = year / 100;
        } else {
            year = (year / 100) + 1;
        }
        return year;
    }

}

其他答案是正確的,但已過時。

java.time

java.time框架內置於 Java 8 及更高版本中。 這些類取代了舊的麻煩的日期時間類,例如java.util.Date.Calendarjava.text.SimpleDateFormat

現在處於維護模式Joda-Time項目還建議遷移到 java.time。

要了解更多信息,請參閱Oracle 教程 並在 Stack Overflow 上搜索許多示例和解釋。

java.time 的大部分功能向后移植到 ThreeTen - Backport 中的 Java 6 和 7,並進一步適應 ThreeT 中的Android

ThreeTen-Extra項目通過附加類擴展了 java.time。 該項目是未來可能添加到 java.time 的試驗場。

LocalDate

LocalDate class 表示沒有時間和時區的僅日期值。

解析指定格式模式。 順便說一句,我建議使用可以由 java.time 類直接解析的 ISO 8601 標准格式。

String input = "06/03/2011";

DateTimeFormatter f = DateTimeFormatter.ofPattern ( "MM/dd/uuuu" ).withLocale ( Locale.US );
LocalDate ld = LocalDate.parse ( input , f );

要獲得世紀,只需將年份數除以 100。如果您想要序數,“二十一世紀”表示 20xx,請加一個。

int centuryPart = ( ld.getYear () / 100 );
int centuryOrdinal = ( ( ld.getYear () / 100 ) + 1 );

轉儲到控制台。

System.out.println ( "input: " + input + " | ld: " + ld + " | centuryPart: " + centuryPart + " | centuryOrdinal: " + centuryOrdinal );

輸入:06/03/2011 | ld: 2011-06-03 | 世紀部分:20 | 世紀序數:21

int century =  (year + 99)/ 100;

我對 Java 一無所知,但您為什么不直接獲得全年並將最后兩位數字設為 0?

編輯

如果您希望 2011 年成為 21 世紀 - 只需獲取字符串格式的完全限定年份,然后敲掉最后 2 個字符,然后解析為 int 並加 1!

您只需返回 (year + 99) / 100

用斜杠分割它,得到結果數組中第三個元素的前兩個符號 Integer.parseInt 並加 1,即:


String arr = myDate.split("/");
String shortYear = myDate[2].substring(0, 2);
int century = Integer.parseInt(shortYear) + 1;
(不確定我腦海中的 substring() 語法)

暫無
暫無

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

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