黑马程序员——java中的时间日期

来源:互联网 发布:淘宝网页版登录入口 编辑:程序博客网 时间:2024/05/19 02:43
------- android培训、java培训、期待与您交流! ----------


一 ,时间日期

1) Java中的时间类有:Date和Calendar
2) Java中时间类的本质
   Date = long + 操作
    Calendar = long + 操作
3) 时间的标准有两种
   (1970)GMT long
    (0)UTC long
 4) java 中基本的时间表示 GMT long
 5) Java提供了Date类型表示时间和日期
   Date 是long类型的包装
 6) Calendar 是历法的的抽象
 历法:公历、农历、太阳历 ...
7 ) GregorianCalendar 是历法的实现,采用公历(太阳历)算法实现的
Calender cal = Calender.getInstance();
8) Date 和 Calendar 的默认值就是系统当前时间

1.1. Java中表示时间的方式
 【案例】long、Date、Calendar演示
  
package bbs.itheima.com;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class LongDemo {    public static void main(String[] args){//    从格林威治时间到当前系统时间的毫秒数    long now = System.currentTimeMillis();//    计算现在的年份(不考虑轮年)    long year = 1970+now/1000/60/60/24/365;    System.out.println(year);//2013    //    当前时间(公历)    Date date = new Date(now);    int y = date.getYear()+1900;    System.out.println("y="+y);//2013    System.out.println(date);//Sat Apr 13 22:38:29 CST 2013    //    Calendar抽象历法//      GregorianCalendar 格里高历(公元历法)//     GregorianCalendar =GMT long+公历算法    Calendar cal = new GregorianCalendar();          Date date2 = new Date();      System.out.println(date2);//Sat Apr 13 23:09:09 CST 2013            System.out.println(      (date2.getYear()+1900)+","      +(date2.getMonth()+1));//2013,4      //          Calendar 没有千年虫问题,不用加“偏移量”1900,      Calendar date3 = new GregorianCalendar(1970,      Calendar.JANUARY,1);      System.out.println((date3.get(Calendar.YEAR)+","+      (date3.get(Calendar.MONTH)+1)));//1970,1            } }

1.2. 时间的类型转换
 
now表示当前时间

【案例】时间类型转换
package bbs.itheima.com;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/**时间类型转换*/public class DateConvertDemo {public static void main(String[] args) {//演示long->Date->Calendar//GMT 原点 ,1970.1.1 0:0:0long time = 0;//现在时间Date date = new Date();System.out.println(date);//Sat Apr 13 23:22:03 CST 2013//long->Date,更改time的时间为(1970.1.1 0:0:0)date.setTime(time);//会出现懂八区现象(多8个小时)System.out.println(date);//Thu Jan 01 08:00:00 CST 1970//现在时间Calendar cal = new GregorianCalendar();System.out.println(cal);//Date->Calendar 更该为time的时间cal.setTime(date);cal.add(Calendar.DAY_OF_YEAR, -1); //演示   Calendar->Date->long// 一天的毫秒数 86400000System.out.println(1000*60*60*24);// Calendar->DateDate d = cal.getTime();System.out.println(d);//Wed Dec 31 08:00:00 CST 1969//Date->longlong l = d.getTime();System.out.println("l="+l);//l=-86400000}}

1.3. 日期的输入与输出
 
   1) 日期输出的本质是将Date转换为格式化的String
   2) 日期输入的本质是将格式化的String转换为Date
   3) java.text.SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
    日期的输入与输出
   日期输出的本质是 Date 转换为格式化的String 日期输入的本质是 将格式化的String转换为Date java.text.SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
   构建SimpleDateFormat 一般提供日期的格式"yyyy-MM-dd" 具体参看 javadoc
   如: "yyyy-MM-dd HH:mm:ss"
  "yyyyMMdd" "dd/MM/yyyy" "MM/dd/yyyy"
   fmt.parse(String)可以实现将(合法)字符串解析为日期类型, 经常用于处理日期输入
   fmt.format(Date)可以把日期格式化为字符串用于输出处理
日期的输入与输出



案例  商品促销日期计算

 
package bbs.itheima.com;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/**商品促销日期计算*/public class PrDateDemo {public static void main(String[] args) throws Exception {String d = "2013-05-01";SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");Date date = fmt.parse(d);Date spec = specialDay(date,3);String s = fmt.format(spec);System.out.println("促销日期:"+s);       }    public static Date specialDay(Date proc,int exp){    Calendar cal = new GregorianCalendar();    cal.setTime(proc);    cal.add(Calendar.MONTH, exp);    cal.add(Calendar.WEEK_OF_YEAR,-2);    cal.set(Calendar.DAY_OF_WEEK,Calendar.FRIDAY);    return cal.getTime();        }}

 运行结果:
促销日期:2013-07-19


  
原创粉丝点击