在。net方面休息了很长时间之后,我又花了一些时间在Java上。我遇到了这段代码:
Date date = new Date(Date.UTC(y - 1900, m - 1, d, h, M, s));
不幸的是,Date.UTC
已经被弃用一段时间了。那么,什么是不会引起编译器警告的等效替换呢?
试试这个
GregorianCalendar cal = new GregorianCalendar();
cal.set(year, month, day,
hour, minute, second);
Date date = cal.getTime();
您的GregorianCalendar还支持设置时区,如果需要的话。
使用Calendar
具体使用set()
法,也有很好的API joda时间
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.set(y, m, d, h, M, s);
Date date = cal.getTime();
使用Joda-time。这真是太棒了,是标准Java日期/时间库的一个巨大飞跃:
new DateTime(year, monthOfYear, dayOfMonth, hourOfDay,
minuteOfHour, secondOfMinute, millisOfSecond,
DateTimeZone.UTC);
但是如果你不喜欢所有这些容易混淆的参数,你也可以使用take builder-style方法:
new DateTime()
.withYear(2011)
.withMonthOfYear(6)
.withDayOfMonth(12)
// etc...
.withZone(DateTimeZone.UTC);
每次调用withXxxx()都会返回一个副本,因此DateTime保持不可变。