如何在Java中从日期获取当前世纪?
例如,根据格式"MM/dd/yyyy"的日期"06/03/2011"。如何使用SimpleDateFormat从该日期获取当前世纪
发布于 2011-06-03 23:53:01
Date date = new SimpleDateFormat("MM/dd/yyyy").parse(yourString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int century = (calendar.get(Calendar.YEAR) / 100) +1;发布于 2017-04-27 22:55:13
对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;
}
}发布于 2016-08-10 07:49:26
其他答案是正确的,但已经过时了。
java.time
java.time框架内置于Java8和更高版本中。这些类取代了旧的麻烦的日期时间类,如java.util.Date、.Calendar和java.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标准格式。
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世纪”,加一个。
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
https://stackoverflow.com/questions/6229347
复制相似问题