Java日期和时间(一)

传统的日期和时间

Date

  • 代表的是日期和时间
构造器说明
public Date()创建一个Date对象,代表的是系统当前此刻日期时间
public Date(long time)把时间毫秒值转换成Date日期对象
常见方法说明
public long getTime()返回从1970年1月1日 00:00:00 走到此刻的总毫秒数
public void setTime(long time)设置日期对象的时间为当前时间毫秒值对应的时间

 

import java.util.Date;

public class Test {
    public static void main(String[] args){
        // 目标:掌握Date日期类的使用
        // 创建一个Date的对象,代表系统当前时间信息
        Date d = new Date();
        System.out.println(d);

        // 拿到时间毫秒值
        long time = d.getTime();
        System.out.println(time);

        // 把时间毫秒值转换成日期对象,2s之后时间是多少
        time += 2 * 1000;
        Date d2 = new Date(time);
        System.out.println(d2);

        // 直接把日期对象的时间通过setTime方法进行修改
        Date d3 = new Date();
        d3.setTime(time);
        System.out.println(d3);
    }
}

SimpleDateFormat

  • 代表简单日期格式化,可以用来把日期对象、时间毫秒值格式化成我们想要的格式。
常见构造器说明
public SimpleDateFormat(String pattern)创建简单日期格式化对象,并封装时间的格式
格式化时间的方法说明
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(Object time)将时间毫秒值化成日期/时间字符串

 

例子 

        给定的日期和时间是 2001-07-04  12:05:56

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

public class Test {
    public static void main(String[] args){
        // 目标:掌握SimpleDateFormat的使用
        Date d = new Date();
        System.out.println(d);

        long time = d.getTime();
        System.out.println(time);

        // 格式化日期对象和时间、毫秒值
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

        String rs = sdf.format(d);
        String rs2 = sdf.format(time);
        System.out.println(rs);
        System.out.println(rs2);
    }
}

时间格式的常见符号: 

 SimpleDateFormat解析字符串时间成为日期对象

解析方法说明

public Date parse(String source)

把字符串时间解析成日期对象
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) throws ParseException {
        // 目标:掌握SimpleDateFormat解析字符串时间成为日期对象
        String dateStr = "2022-12-12 12:12:11";
        
        // 创建简单日期格式化对象,指定的时间格式必须与被解析的时间格式一模一样,否则出现会出bug
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdf.parse(dateStr);
        System.out.println(d);
    }
}

案例练习

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

public class Test {
    public static void main(String[] args) throws ParseException {
        // 目标:掌握SimpleDateFormat解析字符串时间成为日期对象
        String start = "2023年11月11日 0:0:0";
        String end = "2023年11月11日 0:10:0";
        String xj = "2023年11月11日 0:1:18";
        String xp = "2023年11月11日 0:10:57";

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 H:m:s");
        Date startDt = sdf.parse(start);
        Date endDt = sdf.parse(end);
        Date xjDt = sdf.parse(xj);
        Date xpDt = sdf.parse(xp);

        long startTime = startDt.getTime();
        long endTime = endDt.getTime();
        long xjTime = xjDt.getTime();
        long xpTime = xpDt.getTime();

        if (xjTime >= startTime && xjTime <= endTime){
            System.out.println("小贾您秒杀成功");
        }else {
            System.out.println("小贾您秒杀失败");
        }
        if (xpTime >= startTime && xpTime <= endTime){
            System.out.println("小皮您秒杀成功");
        }else {
            System.out.println("小皮您秒杀失败");
        }
    }
}

Calendar

  • 代表的是系统此刻时间对应的日历。
  • 通过它可以单独获取、修改时间中的年、月、日、时、分、秒等。

Calendar日历类的常见方法

方法名说明
public static Calendar getInstance()获取当前日历对象
public int get(int field)获取日历中的某个信息
public final Date getTime()获取日期对象
public long getTimeInMillis()获取时间毫秒值
public void set(int field,int value)修改日历的某个信息
public void add(int field,int amount)为某个信息增加/减少指定的值
import java.util.Calendar;
import java.util.Date;

public class Test {
    public static void main(String[] args){
        // 目标:掌握Calendar的使用和特点
        // 得到系统此刻时间对应的日历对象
        Calendar now = Calendar.getInstance();
        System.out.println(now);

        // 获取日历中的某个信息
        int year = now.get(Calendar.YEAR);
        System.out.println(year);

        int days = now.get(Calendar.DAY_OF_YEAR);
        System.out.println(days);

        // 拿到日历中记录的日期对象
        Date d = now.getTime();
        System.out.println(d);

        //拿到时间毫秒值
        long time = now.getTimeInMillis();
        System.out.println(time);

        // 修改日历中的某个信息
        now.set(Calendar.MONTH,9);
        now.set(Calendar.DAY_OF_YEAR,125);
        System.out.println(now);

        // 为某个信息增加或者减少多少
        now.add(Calendar.DAY_OF_YEAR,100);
        now.add(Calendar.DAY_OF_YEAR,-10);
        now.add(Calendar.DAY_OF_MONTH,6);
        now.add(Calendar.HOUR,12);
        System.out.println(now);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值