如何在不使用任何子字符串算法或任何第三方库的情况下,仅显示当前年份的最后两位数字?
我尝试了以下方法,它给了一个四位数的年份。我想知道是否有任何日期格式选项可用于以两位数格式获取当前年份。
Calendar.getInstance().get(Calendar.YEAR);
答案 0 :(得分:66)
您只需使用模运算符:
int lastTwoDigits = Calendar.getInstance().get(Calendar.YEAR) % 100;
编辑:如果你想让结果成为一个字符串,那么使用@ {J}提出的SimpleDateFormat
是更好的解决方案。如果需要整数,请使用modulo。
答案 1 :(得分:36)
您可以使用SimpleDateFormat
根据您的要求设置日期格式。
DateFormat df = new SimpleDateFormat("yy"); // Just the year, with 2 digits
String formattedDate = df.format(Calendar.getInstance().getTime());
System.out.println(formattedDate);
修改:根据需要/要求,可以使用我建议的方法或 Robin 建议的方法。理想情况下,在使用Date处理大量操作时,最好使用DateFormat
方法。
答案 2 :(得分:6)
这是一个单行:
System.out.println(Year.now().format(DateTimeFormatter.ofPattern("uu")));
我正在使用java.time.Year
,这是Java 8中引入的许多日期和时间类之一(并且还向后移植到Java 6和7)。这只是很多例子中的一个例子,新类更方便,并且导致代码比旧类Calendar
和SimpleDateFormat
更清晰。
如果您只想要两位数字而不是字符串,可以使用:
Year.now().getValue() % 100
。
其他答案在2013年都是很好的答案,但这些年来已经发生了变化。 : - )
答案 3 :(得分:0)
String.format()
也有Date/Time Conversions。
要获取当前年份的后两位数字,
String.format("%ty", Year.now());
这适用于许多java.time
类,包括Year
,YearMonth
,LocalDate
,LocalDateTime
和ZonedDateTime
。 / p>
答案 4 :(得分:0)
@Robin Krahl的解决方案有些古怪,但我喜欢它。如果添加前导零,我们可以避免@Albert Tong注释的情况。为了获得年份的后两位数字,我假设结果应为String。万一我们不能使用@ jaco0646的解决方案。我们可以这样做:
<MaxCpuCount>1</MaxCpuCount>
答案 5 :(得分:0)
在 Kotlin 中
调用此函数并在参数中传递时间
<块引用>示例:
输入参数:“2021-08-09T16:01:38.905Z”
输出:09 Aug 21
private val inputFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private val outputFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
fun calculateDateMonthYear(time: String): String {
val inputTime = inputFormat.parse(time)
val convertDateMonthYear = outputFormat.format(inputTime!!)
val timeInMilliseconds = outputFormat.parse(convertDateMonthYear)!!
val mTime: Calendar = Calendar.getInstance()
mTime.timeInMillis = timeInMilliseconds.time
val date_cal = SimpleDateFormat("dd")
val month_date = SimpleDateFormat("MMM")
val year_cal = SimpleDateFormat("yy")
val date = date_cal.format(mTime.time)
val month_name = month_date.format(mTime.time)
val year = year_cal.format(mTime.time)
return "$date $month_name $year"
}