Date
全世界的时间,有一个统一的计算标准。 世界标准时间:格林尼治时间/格林威治时间简称GMT,目前时间标准时间已经替换为:原子钟。 中国标准时间:世界时间+8 时间换算单位: 一秒等于一千毫秒 一毫秒等于一千微秒 一微秒等于一千纳秒 Date类是JDK写好的一个Javabean类,用来描述时间,精确到毫秒。 利用空参构造创建对象,默认是系统当前的时间。利用有参构造创建对象,表示的是指定的时间。 1.如何创建Date对象 Date d1=new Date(); Date d2=new Date(指定毫秒值); 2.如何修改时间对象中的毫秒值 setTime(指定毫秒值); 3.如何获取时间对象中的毫秒值 getTime();
SimpleDateFormat
作用:
1.格式化:把时间变成我们喜欢的格式
2.解析:把字符串表示的时间变成Date对象
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class a01SimpledateFormatedemo01 {public static void main(String[] args) throws ParseException {//1.定义一个字符串表示时间String str="2023-11-11 11:11:11";//细节:创建对象的格式要和字符串的格式完全一致SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse(str);System.out.println(date);}private static void method() {//1.利用空参构造创建SimplaDateFormate对象,默认格式SimpleDateFormat sdf1=new SimpleDateFormat();Date d1=new Date(0L);String str=sdf1.format(d1);System.out.println(str);//2.利用带参构造创建SimplaDateFormate对象,指定格式SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EE");String format = sdf2.format(d1);System.out.println(format);}
}
练习
package MyApi.a09jdkdemo;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class a02SimpleDateFormatedemo02 {public static void main(String[] args) throws ParseException {/** 假设你初恋的出生年月日为:2000-11-11* 请用字符串表示这个数据,并将其转换为:2000年11月11日*/String str="2000-11-11";SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");Date date = sdf1.parse(str);SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日");String format = sdf2.format(date);System.out.println(format);}
}
package MyApi.a09jdkdemo;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class a03SimpleDateFormatedemo03 {public static void main(String[] args) throws ParseException {/*需求:* 秒杀活动:2023年11月11日 0:0:0* 开始时间:2023年11月11日 0:10:0* 小贾下单并付款的时间为:2023年11月11日 0:01:00* 小皮下单并付款的时间为:2023年11月11日 0:11:0* 用代码说明这两位同学有没有参加上秒杀活动*///定义字符串表示时间String startStr="2023年11月11日 00:00:00";
String endStr="2023年11月11日 00:10:00";
String orderStr="2023年11月11日 00:01:00";String xpoederStr="2023年11月11日 00:11:00";//解析时间得到Date时间SimpleDateFormat sdf=new SimpleDateFormat("yyy年MM月dd日 HH:mm:ss");Date startdate = sdf.parse(startStr);Date enddate = sdf.parse(endStr);Date orderdate = sdf.parse(orderStr);//获得时间毫秒值long startdateTime = startdate.getTime();long enddateTime = enddate.getTime();long orderdateTime = orderdate.getTime();//判断if(orderdateTime>=startdateTime&&orderdateTime<=enddateTime){System.out.println("参加秒杀活动成功");}else{System.out.println("参加秒杀活动失败");}}
}
calendar
calendar代表了系统当前时间的日历对象,可以单独修改、获取时间中的年、月日。
calendar是一个抽象类,不能直接创建对象
package MyApi.a09jdkdemo;import java.util.Calendar;
import java.util.Date;public class a01calendardemo01 {public static void main(String[] args) {//1.获取日历对象//底层原理://会根据系统的不同时区来获取不同的日历对象,默认表示当前时间//会把时间中的纪元、年月日时分秒星期等都放在一个数组当中//细节2://月份:范围0-11//星期:星期日是一周中的第一天Calendar c = Calendar.getInstance();System.out.println(c);
//2.修改一下日历代表的时间Date d=new Date();c.setTime(d);System.out.println(c);c.set(Calendar.YEAR,2023);c.set(Calendar.MONTH,9);c.set(Calendar.DAY_OF_MONTH,10);//调用方法在这个基础上增加一个月c.add(Calendar.MONTH,-1);int year = c.get(1);int month= c.get(2);int date = c.get(5);int week=c.get(Calendar.DAY_OF_WEEK);System.out.println(year+","+month+","+date+","+getweek(week));}public static String getweek(int index){//定义一个数组,让汉字星期几,跟1-7产生关系String [] arr={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};return arr[index];}
}
JDK8新增时间相关类
ZoneId时区
package MyApi.a09jdkdemo;import java.time.ZoneId;
import java.util.Set;public class A01Zoneiddemo01 {public static void main(String[] args) {//获取所有时区名称Set<String> zoneIds = ZoneId.getAvailableZoneIds();System.out.println(zoneIds.size());System.out.println(zoneIds);//2.获取当前系统的默认时区ZoneId zoneId = ZoneId.systemDefault();System.out.println(zoneId);//3.获取指定时区ZoneId zoneId1 = ZoneId.of("Asia/Pontianak");System.out.println(zoneId1);}
}
Instant时间戳
package MyApi.a09jdkdemo;import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;public class A01_instantDemo {public static void main(String[] args) {//1.获取当前时间的instant对象(标准时间)Instant now = Instant.now();System.out.println(now);//2.根据(秒/毫秒/纳秒)获取instant对象Instant instant1 = Instant.ofEpochMilli(0L);System.out.println(instant1);Instant instant2 = Instant.ofEpochSecond(1L);System.out.println(instant2);Instant instant = Instant.ofEpochSecond(1l, 100000000L);System.out.println(instant);//3.指定时区ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));System.out.println(time);//4.判断时间的方法Instant instant3 = Instant.ofEpochMilli(0L);Instant instant4 = Instant.ofEpochMilli(1000L);boolean result1 = instant3.isBefore(instant4);System.out.println(result1);//5.减少时间系列的方法Instant instant5 = Instant.ofEpochMilli(3536352L);System.out.println(instant5);Instant instant6 = instant5.minusSeconds(1);System.out.println(instant6);//6.增加时间系列的方法}
}