JAVA——日期与时间处理

个人简介

  • 大家好,我是翰慧腾。一名正在努力学JAVA的大一小白,本文章为初学的笔记,希望各位多多指教。💙
  • 欢迎点赞+收藏+留言💜
  • 仰望星空的同时要脚踏实地🧡

一、Date类(我们写的是util包下)

构造方法:代码演示

package Stickto;

import java.util.Date;

public class Date_ {
	public static void main(String[] args) {
		Date d=new Date();//创建Date类对象,调用无参构造方法
		System.out.println(d);//输出内容就是当前时间
		Date d1=new Date(18992938);//调用带参构造方法,参数是一个毫秒值,返回的是对应的时间
		System.out.println(d1);
	}
}

输出结果:

getTime方法:用于获取当前时间的毫秒值。代码演示:

package Stickto;

import java.util.Date;

public class Date_ {
	public static void main(String[] args) {
		Date d=new Date();//获取当前时间
		long l=d.getTime();//获取当前时间的毫秒值
		System.out.println(l);//输出结果:1648260254334
	}
}

after方法:用于判断是否在指定日期之后

API文档:

 before方法:用于判断是否在指定日期之前。

API文档:

二、SimpleDateFormat类

概述:该类可以对Date对象或毫秒值格式化成我们喜欢的形式,也可以把字符串的时间形式解析为日期对象。

构造方法、format方法见代码演示(附format代码源码)

注意:format方法参数不仅仅可以是Date对象,也可以是一个毫秒值。对毫秒值进行格式化

API文档:

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

public class SimpleDateFormat_ {
	public static void main(String[] args) {
		Date d=new Date();//获取当前时间
		System.out.println(d);//格式化之前的时间输出
		SimpleDateFormat dd=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");//创建SimpleDateFormat对象,调用带参构造方法,参数是格式化的样式
		String s=dd.format(d);
		System.out.println(s);//格式化之后的时间输出
		long l=d.getTime();//获取当前时间的毫秒值
		String s1=dd.format(l);//format方法的参数不仅仅可以是Date型,也可以对毫秒值进行格式化
		System.out.println(s1);
	}
}
/**public final String format(Date date)
{
    return format(date, new StringBuffer(),
                  DontCareFieldPosition.INSTANCE).toString();
}*/

结果为:

格式化的时间形式常用模式:

 

parse方法:从给定的字符串解析生成日期。代码演示(附parse源码)

package Stickto;

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

public class SimpleDateFormat_1 {
	public static void main(String[] args) throws ParseException {
		String time="2022年03月26日 10时50分";//给定字符串形式的时间
		SimpleDateFormat s=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");//创建SimpleDateFormat对象,设置格式,注意该格式要和给定的字符串的时间格式一样
		Date d=s.parse(time);//调用parse方法,把字符串格式时间解析为Date类的日期
		System.out.println(d);
	}
}
/**
     public Date parse(String source) throws ParseException
    {
        ParsePosition pos = new ParsePosition(0);
        Date result = parse(source, pos);
        if (pos.index == 0)
            throw new ParseException("Unparseable date: \"" + source + "\"" ,
                pos.errorIndex);
        return result;
    }
*/

 结果:

before

 案例:判断小明、小刚是否秒杀时间

需求:开始秒杀时间:2022年03月26日 12时00分
           结束秒杀时间:2022年03月26日 13时00分

     

package Stickto;

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

public class SimoleDateFormat_case {
	public static void main(String[] args) throws ParseException {
		String begin="2022年03月26日 12时00分";
		System.out.println("开始秒杀时间:"+begin);
		String end="2022年03月26日 13时00分";
		System.out.println("结束秒杀时间:"+end);
		String xiaoming="2022年03月26日 12时30分";
		String xiaogang="2022年03月26日 14时00分";
		SimpleDateFormat s=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分");
		Date d1=s.parse(xiaoming);
		Date d2=s.parse(xiaogang);
		Date begin1=s.parse(begin);
		Date end1=s.parse(end);
		if(d1.after(begin1)&&d1.before(end1)) {
			System.out.println("小明秒杀成功了");
		}else 
			System.out.println("小明预约失败了");
		
		if(d2.after(begin1)&&d2.before(end1)) {
			System.out.println("小刚秒杀成功了");
		}else 
			System.out.println("小刚预约失败了");
	}
}

 三、Calender类

概述:Calender代表了系统此刻日期对应的日历对象,该类是一个抽象类,不能直接创建对象。

Calendar是可变日期对象,一旦修改后其对象本省表示的时间将产生变化。

1.getInstance方法:拿到系统此刻日历对象。代码演示:

API文档:

2.get方法:获取信息,见代码演示:

API文档:

  add方法:为某个指定的时间增加或减少指定的值。代码演示:

API文档:

getTime方法:返回一个Date型的时间。代码演示:

API文档:

package Stickto;

import java.util.Calendar;
import java.util.Date;

public class Calendar_ {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Calendar c=Calendar.getInstance();//调用getInstance方法创建Calendar对象
		int y=c.get(Calendar.DAY_OF_YEAR);//获取今天是2022年的第几天
		int yy=c.get(Calendar.DATE);//获取今天是本月的第几天
		c.add(Calendar.DATE,10);//往后推10天
		Date d=c.getTime();//获取向后推10天后的日期
		System.out.println(y);
		System.out.println(yy);
		System.out.println(d);
	}


}

JDK8以后新增的日期API:

LocalDate类

LocalTime类

LocalDateTime类

Instant类

DateTimeFormatter类

Duration类

Period类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨四点半sec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值