Java中关于时间类的用法

java.util.Date

import java.util.Date;

public class DateTest {

	public static void main(String[] args) {
		
		// Date类的空参数构造方法
		// Date( )获取当前系统的日期和时间
		Date date1 = new Date();
		System.out.println(date1);  // Tue Jul 21 21:24:52 CST 2020

	}

}

import java.util.Date;

public class DateTest {

	public static void main(String[] args) {
		
		// Date带参数构造方法  Date(long date)
		// 传递毫秒值,将毫秒值转化为date日期
		Date date2 = new Date(0L);
		System.out.println(date2);  // Thu Jan 01 08:00:00 CST 1970
       
       System.out.println(System.currentTimeMillis()); //1595339511344L
	   Date date3 = new Date(1595339511344L);
	   System.out.println(date3); //Tue Jul 21 21:51:51 CST 2020
   }

}


import java.util.Date;

public class DateTest {

	public static void main(String[] args) {
		
		//getTime()把日期转化为毫秒值。
		//相当于System.currentTimeMillis()
		Date date4 = new Date();
		long time = date4.getTime();
		System.out.println(time);  //1595340386133

    }

}

java.text.DateFormat

java. text. DateFormat :是日期/时间格式化子类的抽象类

作用:格式化(也就是日期->文本)、解析(文本->日期)

成员方法:
String format(Date date) 按照指定的模式,把Date日期,格式化为符合模式的字符串
Date parse(String source) 把符合模式的字符串解析为Date日期

DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类

java. text. SimpleDateFormat extends DateFormat

构造方法: SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
String pattern: 传递指定的模式

模式:区分大小写的
y 年
M 月
d 日
H 时
m 分
s 秒
写对应的模式,会把模式替换为对应的日期和时间“yyyy-MM-dd HH:mm:ss”

注意:
模式中的字母不能更改,连接模式的符号可以改变 “yyyy年MM月dd日 HH时mm分ss秒”

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

/**
 * 使用DateFormat类中的方法format,把日期格式化为文本
 **/

public class DateFormateTest {
	
	public static void main(String[] args) {
		
		//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时 mm分 ss秒");
		
		//2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式化为符合模式的字符串(文本)
		Date date = new Date();       // Date( )获取当前系统的日期和时间
		String s = sdf.format(date);  //日期转化为字符串
		
		System.out.println(date);  //Wed Jul 22 17:00:22 CST 2020
		System.out.println(s);     //2020年07月22日 17时 00分 22秒  
		
		
	}

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

/**
 * 使用DateFormat类中的方法parse,把文本解析为日期
 **/

public class DateFormateTest {
	
	public static void main(String[] args) throws ParseException {
		
		//1.创建SimpleDateFormat对象,构造方法中传递指定的模式
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时 mm分 ss秒");

		//2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
		Date date2 = sdf2.parse("2020年07月22日 17时 00分 22秒");
		System.out.println(date2);    //Wed Jul 22 17:00:22 CST 2020  
		
		
	}

}

注意:
public Date parse(String source) throws ParseException
parse方法声明了一个异常叫ParseException
如果字符串和构造方法的模式不一样,那么程序就会抛出此异常
调用一个抛出了异常的方法,就必须的处理这个异常,要么throws继续抛出这个异常,要么try catch自己处理

java.util.Calendar

java. util. calendar类:日历类

Calendar类是一一个抽象类,里边提供了很多操作日历字段的方法(YEAR、MONTH、DAY_ OF_ MONTH、HOUR )

Calendar类无法直接创建对象使用,里边有一个静态方法叫getInstance( ),该方法返回了Calendar类的子类对象
static Calendar getInstance( ) 使用默认时区和语言环境获得一个日历。

import java.util.Calendar;

public class CalendarTest {

	public static void main(String[] args) {
		
		Calendar c = Calendar.getInstance(); //返回一个子类对象 多态
		System.out.println(c);
		
		/*   返回:
		 *   java.util.GregorianCalendar[time=1595433162158,areFieldsSet=true,
		 *   areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo
		 *   [id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,
		 *   transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,
		 *   ERA=1,YEAR=2020,MONTH=6,WEEK_OF_YEAR=30,WEEK_OF_MONTH=4,DAY_OF_MONTH=22,
		 *   DAY_OF_YEAR=204,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=11,
		 *  HOUR_OF_DAY=23,MINUTE=52,SECOND=42,MILLISECOND=158,ZONE_OFFSET=28800000,DST_OFFSET=0]
      */

	}

}

Calendar类的常用成员方法:

public int get(int field): 返回给定日历字段的值。

public void set(int field, int value):将给定的日历字段设置为给定值。

public abstract void add(int field, int amount): 根据日历的规则,为给定的日历字段添加或减去指定的时间量。public Date getTime( ):返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。

成员方法的参数:

int field:日历类的字段,可以使用Calendar类的静态成员变量获取

public static final int YEAR = 1; 年

public static final int MONTH = 2; 月

public static final int DATE = 5; 月中的某一天

public static final int DAY_ OF_ MONTH = 5; 月中的某一天

public static final int HOUR = 10; 时

public static final int MINUTE = 12; 分

public static final int SECOND = 13; 秒

import java.util.Calendar;

public class CalendarTest {

	public static void main(String[] args) {
		
		/**
		public int get(int field): 返回给定日历字段的值。
		参数:传递指定的日历字段(YEAR, MONTH...)
		返回值:日历字段代表的具体的值
		*/
		Calendar c = Calendar.getInstance(); //返回一个子类对象 多态
		int year = c.get(Calendar.YEAR);
		System.out.println(year); //2020
		
		int month = c.get(Calendar.MONTH);
		System.out.println(month); //6
		
		int day = c.get(Calendar.DATE);
		System.out.println(day); //23
			

	}

}
import java.util.Calendar;

public class CalendarTest {

	public static void main(String[] args) {
		
		/*
	    public void set(int field, int value): 将给定的日历字段设置为给定值。
		参数:int field:传递指定的日历字段(YEAR, MONTH...)
		int value:给指定字段设置的值
	   */
		
		Calendar c = Calendar.getInstance();
		c.set(Calendar.YEAR, 2050); 
		c.set(Calendar.MONTH,5);
		System.out.println(c.get(Calendar.YEAR));  //2050
		System.out.println(c.get(Calendar.MONTH)); //5
		
		//同时设置年月,使用set的重载方法
		c.set(2020, 8, 8);
		System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH));//2020 8
		
	}

}
import java.util.Calendar;

public class CalendarTest {

	public static void main(String[] args) {
		
		/*public abstract void add(int field, int amount): 
		 根据日历的规则,为给定的日历字段添加或减去指定的时间量。把指定的字段增加/减少指定的值
		参数:int field:传递指定的日历字段(YEAR, MONTH...)
		int amount:増加/減较少指定的値
		正数:増加       负数:減少
		*/
		Calendar c = Calendar.getInstance();
		c.add(Calendar.YEAR, 3);    //将年份增加3
		c.add(Calendar.MONTH, -6);  //将月份减去6
		
	}

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

public class CalendarTest {

	public static void main(String[] args) {
		
		/*
		public Date getTime(): 返回一个表示此Calendar时间值〈从万元到現在的毫秒偏移量〉的Date对象。
		把日历对象转化为日期对象
		private static void demo04() 
		 */

		Calendar c = Calendar.getInstance();
		Date date = c.getTime();
		System.out.println(date); //Thu Jul 23 00:46:09 CST 2020
		
	}

}

java.time.LocalDate

import java.time.LocalDate;

public class LocalDateTest {

	public static void main(String[] args) {
	 
		//获取当前日期
		LocalDate localDate1 = LocalDate.now();
		System.out.println(localDate1);     //2020-07-23
		
		//根据参数设置年月日
		LocalDate localDate2 = LocalDate.of(2050, 5, 5); 
		System.out.println(localDate2);     //2050-05-05
		
		/**获取天信息*/
		LocalDate localDate3 = LocalDate.now();
		//获取当前日期在是星期几(星期的英文全称)
		System.out.println(localDate3.getDayOfWeek());   //THURSDAY
		//获取当前日期在是在月的第几天
		System.out.println(localDate3.getDayOfMonth());  //23
		//获取当前日期在是在年的第几天
		System.out.println(localDate3.getDayOfYear());   //205
		
		/**获取月份信息*/
		LocalDate localDate4 = LocalDate.now();
		//获取当前日期所在月份(月份的英文全称)
		System.out.println(localDate4.getMonth());         //JULY
		//获取当前日期所在月份的数值
		System.out.println(localDate4.getMonthValue());    //7
		//获取当前日期的月份有几天
		System.out.println(localDate4.lengthOfMonth());    //31
		
		
		/**获取年份信息*/
		LocalDate localDate5 = LocalDate.now();
		//获取当前日期所在月份的数值
		System.out.println(localDate5.lengthOfYear());   //366
		//判断当前日期所在年份是否为闰年
		System.out.println(localDate5.isLeapYear());     //true
		
		
		/**with开头的方法  将参数替换localDate日期中对应的属性 重新计算并得出新日期*/
		LocalDate localDate6 = LocalDate.now();
		System.out.println(localDate6+"  一年中的第"+localDate6.getDayOfYear()+"天");  
		//2020-07-23   一年中的第205天
		
		//替换localDate日期中的“日”
		System.out.println(localDate6.withDayOfMonth(10));  //2020-07-10
		//替换localDate日期中的“天数”(一年中的第几天) 205-->200
		System.out.println(localDate6.withDayOfYear(200));  //2020-07-18  
		//替换localDate日期中的“月”
		System.out.println(localDate6.withMonth(6));      //2020-06-23
		//替换localDate日期中的“年”
		System.out.println(localDate6.withYear(2050));    //2050-07-23
		
		//将当前日期减一天
		System.out.println(localDate6.minusDays(1));  //2020-07-22
		//将当前日期减一周
		System.out.println(localDate6.minusWeeks(1)); //2020-07-16
		//将当前日期减一个月 一年..
		
		//将当前日期加一天
		System.out.println(localDate6.plusDays(1));  //2020-07-24
		//将当前日期加一周
		System.out.println(localDate6.plusWeeks(1)); //2020-07-30
		//将当前日期加一个月 一年..
		
	 
	}

}

java.time.LocalTime

import java.time.LocalTime;

public class LocalTimeTest {

	public static void main(String[] args) {
		
		//获取当前时间
		LocalTime localTime1 = LocalTime.now();
		System.out.println(localTime1);    //17:58:41.219
		
		//根据参数设置时分 (时分秒)
		LocalTime localTime2 = LocalTime.of(8, 8);
		System.out.println(localTime2);    //08:08
		
		LocalTime localTime3 = LocalTime.now();
		//获取当前时间的小时数
		System.out.println(localTime3.getHour());    //17
		//获取当前时间的分钟数
		System.out.println(localTime3.getMinute());  //58
		//获取当前时间的秒数
		System.out.println(localTime3.getSecond());  //41
		
		/**with开头的方法  将参数替换localTime时间中对应的属性 重新计算并得出新时间*/
		LocalTime localTime4 = LocalTime.now();
		System.out.println("设置前时间是:"+localTime4);   //设置前时间是:17:58:41.221
		
		//替换localTime时间中的“小时”
		System.out.println(localTime4.withHour(6));     //06:58:41.221
		//替换localTime时间中的“分钟”
		System.out.println(localTime4.withMinute(06));  //17:06:41.221
		//替换localTime时间中的“秒”
		System.out.println(localTime4.withSecond(06));  //17:58:06.221
		
		
		LocalTime localTime5 = LocalTime.now();
		System.out.println("设置前时间是:"+localTime5);       //设置前时间是:17:58:41.221
		
		//将当前时间减一小时
		System.out.println(localTime5.minusHours(1));      //16:58:41.221
		//将当前时间减一分钟
		System.out.println(localTime5.minusMinutes(1));    //17:57:41.221
		//将当前时间减一分钟
		System.out.println(localTime5.minusSeconds(1));    //17:58:40.221
		
		//将当前时间加一小时
		System.out.println(localTime5.plusHours(1));	   //18:58:41.221
		//将当前时间加一分钟,秒钟..
		
	}

}

java.time.LocalDateTime

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class LocalDateTimeTest {

	public static void main(String[] args) {
		
		//定义时间字符串格式化模板
		DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
		
		
		//获取当前日期时间
		LocalDateTime localDateTime = LocalDateTime.now();
		System.out.println(localDateTime);    //2020-07-24T15:56:17.179
		

		//使用模板化对象,格式化时间
		String g = formatter.format(localDateTime);
		System.out.println(g);                //2020-07-24 15:56:17
		
		//将时间字符串,根据模板解析为LocalDateTime
		String string = "1998-01-01 13:13:13";
		LocalDateTime parse = LocalDateTime.parse(string,formatter);
		System.out.println(parse);           //1998-01-01T13:13:13
		
		//时间比较
		LocalDateTime nowTime = LocalDateTime.now();   //现在的时间  2020-07...
		System.out.println(nowTime.isBefore(parse));   //false
		System.out.println(nowTime.isAfter(parse));	   //true
		System.out.println(nowTime.isEqual(nowTime));  //true
		
	}

}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值