日期类

表现形式:

1.Long类型的时间:
获取1970到当前时间的毫秒数
Long long = System.currentTimeMillis();

2.Date类型的时间:
Date date = new Date();

3.Calendar类型的时间(格林威治时间):
(1)Calendar是一个抽象类,需要通过其子类来创建对象:
Calendar cal = new GergorianCalendar();

(2)使用静态工厂来创建对象:
Calendar cal = Calendar.getInstance();

(3)设置、修改日期
get():获取
set():设置
add():调整
roll():指定字段进行调整

4.日期格式化:SimpleDateFormat
格式化时间:
y: 年 yyyy: 四位年显示
M:月 MM:两位月显示
d:日 dd: 两位天显示
a:上午/下午
E:星期
H:时 HH:两位时显示
m:分 mm:两位分显示
s:秒 ss:两位秒显示

(1)字符串——>Date
String str = "2018-08-18 18:08:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将字符串解析为日期格式:   sdf.parse(str);
try{
	Date date = sdf.parse(str);
	System.out.println(date);
}catch(ParseException e){
	e.printStackTrace();
}
(2)Date——>字符串
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//将日期转为字符串格式:sdf.format(date);
String str = sdf.format(date);
(3)时区
TimeZone zone = TimeZone.getTimeZone("GMT-8");//东八区时间(北京时间)
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(zone);
System.out.println(sdf.format(date));

5.定时器:
timer.schedule(要执行的任务,第一次执行任务要等待的时间,每隔多长时间执行一次);

Timer timer = new Timer(); timer.schedule(new TimerTask() {    
@Override    
public void run() {
	        Date date5 = new Date();//将日期类型格式化输出(date--->String)
	        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//date--->String
	        String str1 = sdf.format(date5);
		System.out.println(str1);  
		  } }, 5000, 1000)//运行程序5s中之后执行第一次,接着每隔1s执行一次

6.三种类型时间的转换:
Long–>Date–>Calendar

long l = System.currentTimeMillis();
//Long-Date
Date date6 = new Date(l);
//Date-Calendar
Calendar c = new GregorianCalendar();
c.setTime(date6);

Calendar–>Date–>Long

Calendar c1 = new GregorianCalendar();
Date date7 = c1.getTime(); 
//Date---Long 
Long l1 = date7.getTime();

2013年蓝桥A组题A:

/**
 *  2013A组题一:
 * 
 * 世纪末的星期:
 * 
 * 曾有邪教称1999年12月31日是世界末日
 * 还有人称今后的某个世纪末的12月31日,如果是星期一则会。。。
 * 有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一
 * 于是,“谣言制造商”有修改为星期日。。。
 * 
 * 1999年的12月31日是星期五,请问:
 * 未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期五(即星期日)?
 * 
 * 请回答该年份(只写这个4位整数,不要写12月31日等多余信息
 *
 */

public static void main(String[] args) {
  Calendar ca = Calendar.getInstance();
  for(int year=1999; ;year+=100) {
   ca.set(Calendar.YEAR , year);
   ca.set(Calendar.MONTH  , 11); //12月
   ca.set(Calendar.DAY_OF_MONTH , 31);
   System.out.println(year+" "+ca.get(Calendar.DAY_OF_WEEK));
   if(ca.get(Calendar.DAY_OF_WEEK) == 1) { //1为Sunday
    System.out.println(year);
    break;
   }
  }
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值