【Java】Calendar类

方法 作用
public static Calendar getInstance(TimeZone zone,Locale aLocale) 使用默认时区和区域设置获取日历。通过该方法生成Calendar对象。如下所示:Calendar cr=Calendar.getInstance();
public void set(int year,int month,int date,int hourofday,int minute,int second) 设置日历的年、月、日、时、分、秒。
public int get(int field) 返回给定日历字段的值。所谓字段就是年、月、日等等。
public void setTime(Date date) 使用给定的Date设置此日历的时间。Date------Calendar
public Date getTime() 返回一个Date表示此日历的时间。Calendar-----Date
abstract void add(int field,int amount) 按照日历的规则,给指定字段添加或减少时间量。
public long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位。
public int getActualMaximum(int field) 传入Calendar.Date,得到这个月可能有多少天

注意:仅有月份是从0开始的,其余的属性如年、日、时、分、秒等都是从1开始的

calendar.get(Calendar.DAY_OF_WEEK)==1
1:星期天 2:星期一 外国人的第一天是星期天

1998 年 2 月 28 日 23 时 11 分 11 秒

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1998);
cal.set(Calendar.MONTH, 1);//注意这里!!!
cal.set(Calendar.DATE, 28);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 11);
cal.set(Calendar.SECOND, 11);

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class ex1 {
    
    
	public static void main(String args[]) throws ParseException {
    
    
		Calendar c = Calendar.getInstance();
        System.out.println(c.getTime());

        // 获得年份
        System.out.println("现在是:" + c.get(Calendar.YEAR) + "年");

        // 获得月份
        System.out.println("现在是:" + (c.get(Calendar.MONTH)+1) + "月");

        //获得日期
        System.out.println("现在是:" + c.get(Calendar.DATE) + "号");
        System.out.println("现在是:" + c.get(Calendar.DAY_OF_MONTH) + "号");

        // 获得这是今年的第几天
        System.out.println("现在是今年第" + c.get(Calendar.DAY_OF_YEAR) + "天");

        // 获得今天周几
        System.out.println("现在是星期:" + (c.get(Calendar.DAY_OF_WEEK)-1) );

        // 获得今天是这个月的第几周
        System.out.println("现在是第:" + c.get(Calendar.DAY_OF_WEEK_IN_MONTH) + "周" );

        // 12小时制的时间
        System.out.println("现在是:" + c.get(Calendar.HOUR) + "点");

        // 24小时制的时间
        System.out.println("现在是:" + c.get(Calendar.HOUR_OF_DAY) + "点");

        // 分钟数
        System.out.println("现在是:" + c.get(Calendar.MINUTE) + "分");

        // 秒数
        System.out.println("现在是:" + c.get(Calendar.SECOND) + "秒");

        // 毫秒
        System.out.println("现在是:" + c.get(Calendar.MILLISECOND) + "毫秒");


        SimpleDateFormat dc = new SimpleDateFormat();
        dc.applyPattern("yyyy-MM-dd");
        Date d = dc.parse("2020-10-14");
        c.setTime(d);
        System.out.println(c.getTime());
	}       
}

应用——世纪末的星期

曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。

还有人称今后的某个世纪末的12月31日,如果是星期一则会…

有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!

于是,“谣言制造商”又修改为星期日…

1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?

请回答该年份(只写这个4位整数,不要写12月31等多余信息)

2299
package java_b_2013;

import java.text.ParseException;
import java.util.Calendar;

public class ex1 {
    
    
	public static void main(String args[]) throws ParseException {
    
    
		Calendar calendar = Calendar.getInstance();// 可用于1970年后操作日期用
		for (int year = 1999; year < 10000; year += 100) {
    
    
			calendar.set(Calendar.YEAR, year);
			calendar.set(Calendar.MONTH, 11);// 12月 只有月份是0开始的,0对应1月
			calendar.set(Calendar.DAY_OF_MONTH, 31);
			if (calendar.get(Calendar.DAY_OF_WEEK) == 1) {
    
    // 1:星期天 2:星期一 外国人的第一天是星期天
				System.out.println(calendar.getTime());
				break;
			}
		}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_45654306/article/details/109082217