从YMD HMS值创建Java日期,而不使用不推荐的代码



在。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保持不可变。

最新更新