为什么使用 Android Java 会得到错误的月份日期?

发布于 2024-12-11 14:11:20 字数 246 浏览 0 评论 0原文

今天是 Oct 24, 2011

但使用此代码

  Calendar currentDate = Calendar.getInstance();
  int d = currentDate.DAY_OF_MONTH;

给了我日期 5

PS 模拟器设置中的日期是 2011 年 10 月 24 日

Where the day today is Oct 24, 2011 .

but using this code

  Calendar currentDate = Calendar.getInstance();
  int d = currentDate.DAY_OF_MONTH;

gives me the date 5

P.S. the date in emulator settings is October 24, 2011

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

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

发布评论

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

评论(3

很酷不放纵 2024-12-18 14:11:20
 currentDate.DAY_OF_MONTH; 

是在 Calendar 类内部使用的常量。要获取当月的当前日期,请

使用

currentDate.get(Calendar.DAY_OF_MONTH);

更新:

如何将当前日期移动 6 天,并获取新的日期和月份值?
//添加6天
currentDate.add(Calendar.DATE, 6);

//retrieving the month now, note month starts from 0-Jan, 1-Feb
currentDate.get(Calendar.MONTH);
 currentDate.DAY_OF_MONTH; 

is constant which is used internally in Calendar class. To get the current day of month use

use

currentDate.get(Calendar.DAY_OF_MONTH);

Update:

how to shift the current date 6 days, and get the new day and month value ?
//adding 6 days
currentDate.add(Calendar.DATE, 6);

//retrieving the month now, note month starts from 0-Jan, 1-Feb
currentDate.get(Calendar.MONTH);
夏了南城 2024-12-18 14:11:20

DAY_OF_MONTH 字段是一个常量整数。请改用 get 方法:

currentDate.get(Calendar.DAY_OF_MONTH);

您可以使用以下方法添加例如 6 天:

currentDate.add(Calendar.DAY_OF_MONTH, 6);

另请参阅 此页面

The DAY_OF_MONTH field is a constant Integer. Use the method get instead:

currentDate.get(Calendar.DAY_OF_MONTH);

You can add for example 6 days using:

currentDate.add(Calendar.DAY_OF_MONTH, 6);

See also this page.

笑忘罢 2024-12-18 14:11:20

ZonedDateTime

执行此操作的现代方法是使用 java.time 类。

ZonedDateTime 表示时间线上的一个时刻,分辨率为纳秒。

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( z );
int dayOfMonth = zdt.getDayOfMonth();

关于 java.time

java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧日期时间类,例如 java.util.Date、.Calendar 和 & 。 java.text.SimpleDateFormat

Joda-Time 项目,现已在 维护模式,建议迁移到 java.time。

要了解更多信息,请参阅 Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。

许多 java.time 功能都向后移植到 Java 6 和 Java 6。 ThreeTen-Backport 中的 7 并进一步适应 AndroidThreeTenABP(请参阅如何使用...) 。

ThreeTen-Extra 项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如 IntervalYearWeekYearQuarter 等。

ZonedDateTime

The modern way to do this is with the java.time classes.

A ZonedDateTime represents a moment on the timeline with a resolution of nanoseconds.

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( z );
int dayOfMonth = zdt.getDayOfMonth();

About java.time

The java.time framework is built into Java 8 and later. These classes supplant the troublesome old date-time classes such as java.util.Date, .Calendar, & java.text.SimpleDateFormat.

The Joda-Time project, now in maintenance mode, advises migration to java.time.

To learn more, see the Oracle Tutorial. And search Stack Overflow for many examples and explanations.

Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport and further adapted to Android in ThreeTenABP (see How to use…).

The ThreeTen-Extra project extends java.time with additional classes. This project is a proving ground for possible future additions to java.time. You may find some useful classes here such as Interval, YearWeek, YearQuarter, and more.

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