我有以下格式的2个日期,其中月份为3个字母的字符串
1988-JUL-21
2016 - 12月18
如何以上述格式计算日期之间的年数?
我能够计算月份是使用Joda时间整数的月份之间的差异,如下所示
val y = Years.yearsBetween(new LocalDate("1988-12-21"), new LocalDate("2016-1-18"))
println( y.getYears)
Output: 27
答案 0 :(得分:3)
您使用DateTimeFormat
来调用LocalDate.parse(String, DateTimeFormatter)
方法。像,
public KeyStrokes() {
super("Swing Window");
setSize(500, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
add(pnl);
pnl.add(field);
pnl.add(txtArea);
setVisible(true);
field.addKeyListener(this);
}
答案 1 :(得分:1)
以下是如何使用DateTimeFormatter来解析日期来继续使用纯Java 8:
// The formatter to use when parsing the dates with a locale
// defined to prevent failures on non english environment
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd", Locale.US);
System.out.println(
ChronoUnit.YEARS.between(
LocalDate.parse("1988-Jul-21", formatter),
LocalDate.parse("2016-Dec-18", formatter)
)
);
<强>输出:强>
28
答案 2 :(得分:0)
您可以使用的强力方法只是将字母字符串转换为正确的int值。你可以使用像这样的数组。
String[11] months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
然后你可以循环查找你当前月份与其中一个月份匹配的时间,然后取i val + 1(因为它基于零)。
在我看来,这比写出12条if语句更好。
for (int i = 0; i < months.length; i++) {
//where monthStr is a String that is the 3 letter month representaton
if (monthStr = months[i]) {
int monthInt = i + 1;
}
}