如何在Java中使用Century获取Century

Zee*_*han 8 java date

如何从Java中的日期获得当前世纪?

例如,"06/03/2011"根据格式的日期"MM/dd/yyyy".我怎样才能从这个日期开始使用SimpleDateFormat

Har*_*ime 12

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

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

int century = (calendar.get(Calendar.YEAR) / 100) +1;
Run Code Online (Sandbox Code Playgroud)


小智 11

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;
    }

}
Run Code Online (Sandbox Code Playgroud)


Bas*_*que 6

其他答案是正确的但已过时。

java.time

java.time框架内置于 Java 8 及更高版本中这些类取代了旧的麻烦的日期时间类,例如java.util.Date, .Calendar, & java.text.SimpleDateFormat

现在处于维护模式Joda-Time项目还建议迁移到 java.time。

要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。

许多 java.time 功能在ThreeTen-Backport中向后移植到 Java 6 和 7 ,并在ThreeTenABP中进一步适应 Android 。

ThreeTen -Extra项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。

LocalDate

该类LocalDate表示仅日期值,没有时间和时区。

要解析指定格式模式。顺便说一下,我建议使用 ISO 8601 标准格式,它可以由 java.time 类直接解析。

String input = "06/03/2011";

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

要获得世纪,只需将年份数字除以 100。如果您想要序数“二十一世纪”20xx,请加一。

int centuryPart = ( ld.getYear () / 100 );
int centuryOrdinal = ( ( ld.getYear () / 100 ) + 1 );
Run Code Online (Sandbox Code Playgroud)

转储到控制台。

System.out.println ( "input: " + input + " | ld: " + ld + " | centuryPart: " + centuryPart + " | centuryOrdinal: " + centuryOrdinal );
Run Code Online (Sandbox Code Playgroud)

输入: 06/03/2011 | LD: 2011-06-03 | 世纪部分:20 | 世纪序号:21


jcv*_*dan 0

我对Java一无所知,但你为什么不直接获取全年并将最后两位数字设为0呢?

编辑

如果您希望 2011 年成为 21 世纪 - 只需获取字符串格式的完全限定年份,然后去掉最后 2 个字符,然后解析为 int 并加 1!