我需要以字符串形式获取当前年份值,所以我这样做了:
Calendar now = Calendar.getInstance();
DateFormat date = new SimpleDateFormat("yyyy");
String year = date.format(now);
它适用于ubuntu,但不适用于windows 7。
你知道为什么吗?有没有更安全的方法来做到这一点?
谢谢
我需要以字符串形式获取当前年份值,所以我这样做了:
Calendar now = Calendar.getInstance();
DateFormat date = new SimpleDateFormat("yyyy");
String year = date.format(now);
它适用于ubuntu,但不适用于windows 7。
你知道为什么吗?有没有更安全的方法来做到这一点?
谢谢
您可以使用以下方法简单地从Calendar
实例中获取年份Calendar#get(int field)
:
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
String yearInString = String.valueOf(year);
String thisYear = new SimpleDateFormat("yyyy").format(new Date());
在 Java 8 中有一个名为的集合java.time
,您可以在其中轻松地从计算机的时钟中获取当前年份。
要将当前年份作为整数获取,您可以简单地编写:
int thisYear = Year.now().getValue();
将其作为字符串获取:
String thisYear = Year.now().toString();
关于什么
Date currentDate = new Date();
String currentYear = String.valueOf(currentDate.getYear());
你也可以这样做:
String year = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
尝试
Calendar now = Calendar.getInstance();
String year = String.valueOf(now.get(Calendar.YEAR));
问题和接受的答案都忽略了时区问题。在新年的时候,年数会因您所在的时区而异。
捆绑的 java.util.Date 和 .Calendar 类是出了名的麻烦。避开他们。使用 Joda-Time 或 Java 8 中的新 java.time 包。
Joda-Time 中的示例。
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTime = DateTime.now( timeZone );
int year = dateTime.year().get();
// enter code here
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy");
String year = format.format(date);
在 Java 8 之前的 Java 版本中,您还可以使用 java.sql.Date 类。将年份转换为字符串和子字符串:
String currentYear = new java.sql.Date(System.currentTimeMillis()).toString().substring(0, 4);