我有两个数字。 首先是月份号。 第二个是天数。
我也知道年份。
如何将月份和日期这两个数字取为单一数字DAY_OF_YEAR?
我正在使用Java 1.7和Calendar函数。
答案 0 :(得分:1)
int year = 2019;
int monthNumber = 9;
int dayNumber = 28;
LocalDate date = LocalDate.of(year, monthNumber, dayNumber);
int dayOfYear = date.getDayOfYear();
System.out.println("Day of year is " + dayOfYear);
此代码段的输出为:
一年中的第271天
使用ThreeTen Backport 1.3.6在Java 1.7.0_79上进行测试,并导入org.threeten.bp.LocalDate
。
此处创建和设置Calendar
对象的当前接受的答案的四行仅替换为一行。使用Calendar
的代码通常过于冗长,这是我们不希望的。同样,尽管Calendar
对象的名称不仅仅是日历日期,它还带有一天中的某个时间,一个时区以及更多内容,因此我认为它不适合手头的工作。如果默认语言环境为Thai,则使用Calendar
的代码将给出不同的结果,这将使大多数人感到惊讶。 Calendar
类的设计很差,已经过时了。
相反,我使用的是现代Java日期和时间API java.time的LocalDate
。
我正在使用Java 1.7…
java.time在Java 7上运行良好。它至少需要 Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。答案 1 :(得分:0)
仅使用日历并假设月份数为零,其中0
表示一月,这是2019年5月13日的示例:
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.ENGLISH);
c.set(Calendar.YEAR, 2019);
c.set(Calendar.MONTH, 4);
c.set(Calendar.DAY_OF_MONTH, 13);
System.out.println(c.get(Calendar.DAY_OF_YEAR));
编辑:正如Ole VV的答案指出的那样,如果您调用“ Calendar.getInstance()”,则将获得带有系统时区的Calendar对象,因此我对其进行了更改,以便您明确指定要使用的时区和语言环境。 。如果您例如想要获取日期的星期数,其中世界各地的规则都不同。
答案 2 :(得分:0)
您可以将零件合并为String
,并使用SimpleDateFormatter
,例如:
int year = 2019;
int month = 1;
int day = 23;
String string = "" + year + "-" + month + "-" + day;
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(string);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));
该示例适用于2019年1月23日。