方法 | 作用 |
---|---|
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;
}
}
}
}