如何在Java中使用Century获取Century

时间:2011-06-03 15:43:12

标签: java date

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

例如,根据格式"06/03/2011"的日期"MM/dd/yyyy"。如何使用SimpleDateFormat

从此日期开始当前世纪

5 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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;
    }

}

答案 2 :(得分:3)

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

java.time

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

现在在maintenance mode中,Joda-Time项目还建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的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 );

要获得这个世纪,只需取年份数除以100.如果你想要20xx的ordinal number,“二十一世纪”,加一个。

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 | centurypart:20 | centuryOrdinal:21

答案 3 :(得分:0)

我对Java一无所知,但为什么不只是获得全年并将最后2位数字设为0?

修改

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

答案 4 :(得分:-1)

用斜线拆分它,得到结果数组中第三个元素的前两个符号,Integer.parseInt并加1,即:

String arr = myDate.split("/");
String shortYear = myDate[2].substring(0, 2);
int century = Integer.parseInt(shortYear) + 1;
(不确定我头顶的substring()语法)