繁体   English   中英

公历返回奇怪的值?

[英]Gregorian Calendar returning strange values?

public class MyCalendar {

    GregorianCalendar greg = new GregorianCalendar();
    String[] month = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    String[] day = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

    public void printMonth(int d, int m, int y) {
    GregorianCalendar greg= new GregorianCalendar(greg.get(Calendar.YEAR),
                greg.get(Calendar.MONTH), 1);

            System.out.println(month[greg.get(Calendar.MONTH)]);
            System.out.println(greg.get(Calendar.FRIDAY));
            System.out.println(greg.get(Calendar.SATURDAY));
    }

我很难弄清楚为什么greg.get(Calendar ._____)给我意外的值。

YEAR, MONTH, DATE all give me correct values: 2015, 9, 6

FRIDAY returns 279

SATURDAY returns 3

SUNDAY returns 2015

TUESDAY returns 41

有人可以向我解释为什么我得到这些数字吗? 我试图找出该月所有星期六的日期,并认为greg.get(Calendar.SATURDAY)可能对此有用。

因此, Calendar#get允许你获得的paritcular领域Calendar对象,如DAY_OF_WEEK ,然后可以映射回Calendar.MONDAY通过Calendar.SUNDAY ,使其更容易理解的返回结果。

因此,要计算一个月中的SATURDAY的数量,您需要先找到第一个SATURDAY (是的,我在设置DATE之后尝试使用cal.set(Calendar.DAY_OF_WEEK, Calendar.SATUDAY) ,但是不一致结果)

Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, 1);

while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) {
    cal.add(Calendar.DATE, 1);
}

然后简单地向前计数7天,直到我们离开当月

int count = 0;
int month = cal.get(Calendar.MONTH);
while (cal.get(Calendar.MONTH) == month) {
    count++;
    cal.add(Calendar.DATE, 7);
}

System.out.println("This month has " + count + " saturdays");

Java 8

LocalDate date = LocalDate.now();
LocalDate endOfMonth = date.withDayOfMonth(date.lengthOfMonth());

date = date.withDayOfMonth(1);
System.out.println(date);
date = date.with(ChronoField.DAY_OF_WEEK, DayOfWeek.SATURDAY.getValue());

int count = 0;
while (date.isEqual(endOfMonth) || date.isBefore(endOfMonth)) {
    count++;
    date = date.plusDays(7);
}

System.out.println("You have " + count + " Saturdays");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM