首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中从日期获取世纪

如何在Java中从日期获取世纪
EN

Stack Overflow用户
提问于 2011-06-03 23:43:12
回答 5查看 25.7K关注 0票数 9

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

例如,根据格式"MM/dd/yyyy"的日期"06/03/2011"。如何使用SimpleDateFormat从该日期获取当前世纪

EN

回答 5

Stack Overflow用户

发布于 2011-06-03 23:53:01

代码语言:javascript
运行
复制
Date date = new SimpleDateFormat("MM/dd/yyyy").parse(yourString);

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

int century = (calendar.get(Calendar.YEAR) / 100) +1;
票数 13
EN

Stack Overflow用户

发布于 2017-04-27 22:55:13

对Harry Lime发布的内容做了一点小小的改变。他的逻辑并不完全正确。1901年是20世纪,1900年是19世纪。

代码语言:javascript
运行
复制
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;
    }

}
票数 13
EN

Stack Overflow用户

发布于 2016-08-10 07:49:26

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

java.time

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

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

要了解更多信息,请参阅Oracle Tutorial。和搜索堆栈溢出,以获得许多示例和解释。

ThreeTen-Backport中,java.time的大部分功能都被移植到Java6和7中,并在ThreeTenABP中进一步适用于安卓。

ThreeTen-Extra项目使用额外的类扩展了java.time。这个项目是未来可能添加到java.time中的试验场。

LocalDate

LocalDate类表示不带时间和时区的仅日期值。

若要解析,请指定格式化模式。顺便说一下,我建议使用可以由java.time类直接解析的ISO8601标准格式。

代码语言:javascript
运行
复制
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,“21世纪”,加一个。

代码语言:javascript
运行
复制
int centuryPart = ( ld.getYear () / 100 );
int centuryOrdinal = ( ( ld.getYear () / 100 ) + 1 );

转储到控制台。

代码语言:javascript
运行
复制
System.out.println ( "input: " + input + " | ld: " + ld + " | centuryPart: " + centuryPart + " | centuryOrdinal: " + centuryOrdinal );

输入: 06/03/2011 | ld: 2011-06-03 | centuryPart: 20 | centuryOrdinal: 21

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6229347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档