从 YMD HMS 值创建 Java 日期而不使用已弃用的代码

发布于 2024-11-03 14:45:09 字数 207 浏览 1 评论 0原文

在 .NET 方面休息了很长一段时间后,我再次花一些时间使用 Java。我遇到了这段代码:

Date date = new Date(Date.UTC(y - 1900, m - 1, d, h, M, s));

不幸的是 Date.UTC 已被弃用一段时间了。那么,什么是不会导致编译器警告的等效替换呢?

I'm spending some time with Java again after a long break on the .NET side. I came across this code:

Date date = new Date(Date.UTC(y - 1900, m - 1, d, h, M, s));

Unfortunately Date.UTC has been deprecated for a while. So, what is an equivalent replacement that won't cause compiler warnings?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我不是你的备胎 2024-11-10 14:45:09

试试这个

GregorianCalendar cal = new GregorianCalendar();
cal.set(year, month, day,
        hour, minute, second);
Date date = cal.getTime();

如果需要的话,GregorianCalendar 还支持设置时区。

Try this

GregorianCalendar cal = new GregorianCalendar();
cal.set(year, month, day,
        hour, minute, second);
Date date = cal.getTime();

You GregorianCalendar also supports setting the TimeZone if needed.

若言繁花未落 2024-11-10 14:45:09

使用 日历
具体使用 set()方法,还有很好的APIjoda 时间

更新

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.set(y, m, d, h, M, s);
Date date = cal.getTime();

Use Calendar
Specifically use set() method, Also there is very good API joda time

Update

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.set(y, m, d, h, M, s);
Date date = cal.getTime();
流年里的时光 2024-11-10 14:45:09

使用Joda-time。它非常棒,与标准 Java 日期/时间库相比有一个巨大的飞跃:

new DateTime(year, monthOfYear, dayOfMonth, hourOfDay, 
             minuteOfHour, secondOfMinute, millisOfSecond, 
             DateTimeZone.UTC);

但是如果您不喜欢所有这些容易混淆的参数,您也可以使用构建器风格的方法:

new DateTime()
    .withYear(2011)
    .withMonthOfYear(6)
    .withDayOfMonth(12)
    // etc...
    .withZone(DateTimeZone.UTC);

每次调用 withXxxx() 都会返回一个副本所以 DateTime 保持不变。

Use Joda-time. It's just awesome and a huge leap from the standard Java Date/Time libraries:

new DateTime(year, monthOfYear, dayOfMonth, hourOfDay, 
             minuteOfHour, secondOfMinute, millisOfSecond, 
             DateTimeZone.UTC);

But if you don't like having all those params which are easily confused you can also use take builder-style approach:

new DateTime()
    .withYear(2011)
    .withMonthOfYear(6)
    .withDayOfMonth(12)
    // etc...
    .withZone(DateTimeZone.UTC);

Each call to withXxxx() returns a copy so DateTime remains immutable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文