7

我需要以字符串形式获取当前年份值,所以我这样做了:

Calendar now = Calendar.getInstance();
DateFormat date = new SimpleDateFormat("yyyy");
String year = date.format(now);

它适用于ubuntu,但不适用于windows 7。

你知道为什么吗?有没有更安全的方法来做到这一点?

谢谢

4

10 回答 10

24

您可以使用以下方法简单地从Calendar实例中获取年份Calendar#get(int field)

Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
String yearInString = String.valueOf(year);
于 2013-10-05T12:54:50.237 回答
13
String thisYear = new SimpleDateFormat("yyyy").format(new Date());
于 2014-05-18T04:17:46.973 回答
3

在 Java 8 中有一个名为的集合java.time,您可以在其中轻松地从计算机的时钟中获取当前年份。

要将当前年份作为整数获取,您可以简单地编写:

int thisYear = Year.now().getValue();

将其作为字符串获取:

String thisYear = Year.now().toString();
于 2016-04-10T10:28:17.797 回答
2

关于什么

Date currentDate = new Date();
String currentYear = String.valueOf(currentDate.getYear());
于 2013-10-05T12:54:44.890 回答
2

你也可以这样做:

String year = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
于 2013-10-05T13:18:26.517 回答
1

尝试

Calendar now = Calendar.getInstance();
String year = String.valueOf(now.get(Calendar.YEAR));
于 2013-10-05T12:55:18.307 回答
1

时区

问题和接受的答案都忽略了时区问题。在新年的时候,年数会因您所在的时区而异。

乔达时间

捆绑的 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();
于 2014-05-18T07:56:50.143 回答
1

爪哇 8:

java.time.Year.now();

这是链接

于 2016-03-25T08:52:16.903 回答
0
  //  enter code here
Date date = new Date();
DateFormat format = new SimpleDateFormat("yyyy");
String year = format.format(date);
于 2016-04-14T11:46:21.163 回答
0

在 Java 8 之前的 Java 版本中,您还可以使用 java.sql.Date 类。将年份转换为字符串和子字符串:

String currentYear = new java.sql.Date(System.currentTimeMillis()).toString().substring(0, 4);
于 2017-08-17T06:40:46.740 回答