【JavaSE_学习笔记】Date类SimpleDateFormat类与Calendar类

【JavaSE_学习笔记】Date类SimpleDateFormat类与Calendar类

Date类

Date类(日期类)位于java.util包下
构造方法:
  public Date():表示分配的一个Date对象:无参: 通过无参构造获取当前系统的具体的时间
  public Date(long date):指定一个时间毫秒值 和它1970-1-1 00:00:00有时间差
举例:

import java.util.Date;
//导包导的是java.util包,千万不能导错了
public class Demo1 {
    public static void main(String[] args) {
        Date date=new Date();
        System.out.println(date);//Sun Nov 05 22:12:50 CST 2017
        Date date2=new Date(6455613165L);
        System.out.println(date2);//Tue Mar 17 01:13:33 CST 1970
    }
}

常用方法:
  public long getTime():获取当前时间毫秒值
     如果知道Date对象,可以通过getTime()获取时间毫秒值
   public void setTime(long time):输入毫秒值返回日期,距1970年1月1日
举例:

import java.util.Date;

public class Demo2 {
    public static void main(String[] args) {
        Date date=new Date();
        long nowTime=date.getTime();
        System.out.println(nowTime);//1509891529888
        date.setTime(5461661646L);
        System.out.println(date);//Thu Mar 05 13:07:41 CST 1970
    }
}

Date中许多方法已经过期,可以使用但不推荐使用。

Calendar类(日历类)

Calendar 类是一个抽象类,它为特定时间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
Calendar该类是一个抽象类:不能实例化的,所以通过一下这个方法来创建对象:
  public static Calendar getInstance()
常用方法:
  public int get(int field)返回给定日历字段的值
    public static final int YEAR:表示日历中的年
    public static final int MONTH:月份:是0开始计算的
    public static final int DATE:和DAY_OF_MONTH是同义词,表示月份中的某天
  举例:

import java.util.Calendar;

public class Demo3 {
    public static void main(String[] args) {
        Calendar c=Calendar.getInstance();
        System.out.println(c.get(Calendar.YEAR));//2017
        System.out.println(c.get(Calendar.MONTH));//10
        System.out.println(c.get(Calendar.DAY_OF_MONTH));//5
        System.out.println(c.get(Calendar.HOUR_OF_DAY));//22
        System.out.println(c.get(Calendar.MINUTE));//34
        System.out.println(c.get(Calendar.SECOND));//41
    }
}

  public abstract void add(int field,int amount)为给定的日历的字段添加或者减去时间偏移量
  public final void set(int year,int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
练习:

import java.util.Calendar;
import java.util.Scanner;

/**
 * 键盘录入一个年份,获取任意一年的二月有多少天
 * 分析:
 *      1)创建键盘录入对象,录入某一个年份
 *      2)获取日历类对象,getInstance()
 *      3)设置一个日历字段,年,月,日
 *          日历类对象.set(year,2,1):这里其实表示3月1
 *      4)将时间往前推一天
 *          日历类对象.add(Calendar.DATE,-1) ;
 *      5)获取DATE月份中的天,输出即可
 *      
 * @author Apple
 */
public class CalendarTest {

    public static void main(String[] args) {

        //创建键盘录入对象
        Scanner sc = new Scanner(System.in) ;

        //录入并接收数据
        System.out.println("请您输入一个年份:");
        int year = sc.nextInt() ;

        //创建日历类对象
        Calendar c = Calendar.getInstance() ;
        //设置日历的字段,年,月,日
        c.set(year, 2, 1) ;//其实月份:(month+1):3月1

        //将时间往前推算一天
        c.add(Calendar.DATE, -1) ;

        System.out.println("任意一年的二月有:"+c.get(Calendar.DATE));
    }
}

SimpleDateFormat类(日期格式化类)

作用: 1.可以把时间对象转为指定格式的字符串(格式化)  format();
    2.可以把字符串转为日期对象(解析)  parse();
  要进行转换必须使用中间桥梁:DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间
  日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期Date -> 文本String)、解析(文本String-> 日期Date)和标准化
  DateFormat是抽象类,不能直接实例化,使用的是它更具体的子类进行实例化:SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类
常用的构造方法:
  public SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造
   日期和时间模式
  y   年 比如:2017—->yyyy
  M   年中的月份:2——>MM
  d   月份中的天数 :—–>dd
  H   小时      HH
  m   小时中的分钟数  mm
  s   分钟中的秒数   ss
注意:字符串—->时间对象时,字符串的格式必须要与SimpleDateFormat指定的格式一致,否则会报错ParseException
举例:

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

public class Demo4 {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat();
        String time=sdf.format(new Date());
        System.out.println(time);//默认格式:17-11-5 下午11:33

        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日 kk:mm:ss");
        String time2=sdf2.format(new Date());
        System.out.println(time2);//以指定格式输出2017年11月05日 23:35:26

        String now="2017年11月6日 12:45:35";
        //使用parse()方法一定要记得抛出异常throws ParseException
        Date date=sdf2.parse(now);
        System.out.println(date);//Mon Nov 06 12:45:35 CST 2017
    }
}

练习:

/**
 * 键盘录入你的出生年月日,计算你来到这个世界有多少天了?
 * 
 * 分析:
 *      1)键盘键盘录入出生年月日,录入这一个String类型的数据
 *      2)创建SimpleDateFormat对象指定一种模式
 *      3)将当前String日期文本格式转换成date对象
 *      4)通过Date对象获取getTime():获取时间毫秒值
 *      5)得到当前系统时间的毫秒值(System.currentTimeMillis)
 *      6):5)-4)=long 类型的时间
 *      7)换算成多少天
 *      8)输出
 * @author Apple
 */
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Demo2 {
    public static void main(String[] args) throws ParseException {
        Scanner sc=new Scanner(System.in);
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
        System.out.println("请输入出生年月日");
        String birthday=sc.nextLine();
        Date birthdate=sdf.parse(birthday);
        long time=birthdate.getTime();
        long nowTime=System.currentTimeMillis();
        long liveDay=(nowTime-time)/1000/60/60/24;
        System.out.println("已存活:"+liveDay);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值