Java类及其常用方法(八)---Date

来源:互联网 发布:微信扫二维码抽奖软件 编辑:程序博客网 时间:2024/05/21 22:21


Date类:

Date类的描述:日期类
表示特定的瞬间,精确到毫秒
1.Date类的构造方法
  public Date()空参构造(使用这个获取系统当前的日期时间)
  public Date(long time):指定一个时间毫秒值

2.两个常用的成员方法
  public long getTime():获取自1970年1月1日的表示date对象的一个毫秒数
  public void setTime(long time):指定一个毫秒数
  i:如果用date对象获取毫秒值
  getTime():获取当前时间的毫秒值
  一般用System.currentTimeMillis(),替换掉它
  ii:如果给Date对象指定一个毫秒值
  setTime

3.重点
Date(Date对象)---->String(日期的字符串类型)
Date---->String格式化
    DateFormat类,但是该类是一个抽象类,不能直接实例化,所以不能直接使用它进行中间桥梁的转换
    public SimpleDateFormat(String pattern)将一个Date格式化为日期/时间字符串
也就是用DateFormat的子类:SimpleDateFormat格式化或解析日期或者解析时间的具体类;
   SimpleDateFormart类:
    两个构造方法:
public SimpleDateFormat():无参构造:使用默认的模式构造一个对象
public SimpleDateFormat(String pattern):指定一种模式,可以写出xxx年xxx月xxx日   xxxx-xx-xx

   日期和时间模式:
年                          Y                     例如:2017yyyy
年中的月份                  M                         8,11   MM
月份中的天数                d                          24,25   dd


小时                        H                          HH
分钟                        m                           mm
秒数                        s                             ss
String(字符串的日期/时间的变现形式)----->Date对象:解析
使用SimpleDateFormat类的另一个方法
public Date parse(String source):该方法会抛出一个异常:解析异常parseException
注意:这个转换里面的字符的内容必须和模式的内容一致,否则抛出异常

代码:


4.将Date和String之间的相互转换封装成一个工具类
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;


/**
 * 将Date和String之间的相互转换封装成一个工具类:
 * */
public class DateUtil {
//不让外界创建对象
private DateUtil(){

}

/**
* 这是一个将Date对象转换为String类型的方法
* @param 
* d:表示的是日期对象
* @param
* format:表示需要转换的一个格式
* @return
* 返回的就是一个日期的字符串表现形式

* */
public static String dateToString(Date d,String format){
//创建SimpleDateFormat对象
/*SimpleDateFormat sdf = new SimpleDateFormat(format) ;
String s = sdf.format(d) ;
return s ;*/

//使用匿名对象的格式
return new SimpleDateFormat(format).format(d) ;
}

/**
* 这是将字符串的日期表现形式转换成Date日期对象
* @param
* s:表示当前字符串的文本形式
* @param
* format:需要转换的一种格式
* @return
* 最终返回是一个日期对象
* @throws ParseException 
* 抛出一个解析异常!
* */
public static Date stringToDate(String s,String format) throws ParseException{
return new SimpleDateFormat(format).parse(s) ;
}
}
//测试类
public class DateUtilDemo {
public static void main(String[] args) throws ParseException {
//创建日期对象
Date d = new Date();

String s = DateUtil.dateToString(d, "yyyy年MM月dd日 HH时mm分ss秒") ;
System.out.println("s:"+s);
String s2 = DateUtil.dateToString(d, "yyyy-MM-dd HH:mm:ss") ;
System.out.println("s2:"+s2);
String s3 = DateUtil.dateToString(d, "HH时mm分ss秒") ;
System.out.println("s3:"+s3);

System.out.println("-----------------------");

//String----->Date
String s4 = "2018-8-15" ;

Date d2 = DateUtil.stringToDate(s4, "yyyy-MM-dd-") ;
System.out.println("d2:"+d2);
}
}
案例:
键盘录入你的出生年月日,计算出你来到这个世界有有多少天!

public class DateTest {
public static void main(String[] args) throws ParseException {
//创建键盘录入对象
Scanner sc=new Scanner(System.in);
System.out.println("请输出你的出生年月日:");
String s=sc.nextLine();
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd") ;
//开始解析
Date d =sdf.parse(s) ;

long oldTime=d.getTime();

long nowTime=System.currentTimeMillis();
long time=nowTime-oldTime;
long day=time/1000/60/60/24;
System.out.println("你已经活了"+day+"天");
}


}