ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

时间板块API方法的使用

2022-09-03 23:32:09  阅读:195  来源: 互联网

标签:String 板块 long int API 时间 LocalDateTime Date 方法


时间板块API方法的使用

基本知识

1. 时间原点 : 
	 1970年01月01日 08:00:00 东八区
	 1970年01月01日 00:00:00 格林威治时间
2. 时间的文化差异 :
	//Calendar 日历类
	JDK8之前的时间操作类中 : 一周的第一天不是周一而是周日
	JDK8之前的时间操作类中 : 月份的索引是从 0 开始的
	JDK8移除了文化差异!!
3. 时间的单词
    1、时间单位:
        秒 second; 
        分钟 minute; 
        一刻钟 quarter; 
        小时 hour; 
        天 day;
        星期 week; 
        月 month; 
        年 year;
    2、与日期相关单词:
    	今天 today;
        明天 tomorrow; 
        后天 the day after tomorrow; 
        昨天 yesterday;
    	前天 the day before yesterday; 
        早晨 morning; 
        中午 noon; 
        下午 afternoon;
    	傍晚 evening; 
        今晚 tonight; 
        晚上 night/evening;
    3、月份名称单词:
        一月 January(缩写Jan);
        二月 February(缩写Feb);
        三月 March(缩写Mar);
        四月 April(缩写Apr); 
        五月 May (缩写May); 
    	六月 June (缩写Jun);
        七月 July(缩写Jul); 
    	八月 August(缩写Aug); 
    	九月 September(缩写Sep);
        十月 October(缩写Oct); 
        十一月 November(缩写 Nov); 
    	十二月 December(缩写Dec)
    4、星期名称单词:
   		星期一 Monday(缩写Mon); 
        星期二 Tuesday(缩写Tue);
   		星期三 Wednesday (缩写Wed);
        星期四 Thursday(缩写Thu);
   		星期五 Friday(缩写Fri);
        星期六 Saturday(缩写Sat); 
        星期日 Sunday(缩写Sun)
4. 不要操作农历

时间类型 :
	Date : Date类型的时间 -> 日期时间 -> 中间值
	long : 时间毫秒值  -> 可以计算
	String : 最容易去表达的时间  --->输出格式

Date----->日期类

Date : 日期类 -> 特定的时间瞬间 精度 : 毫秒 
	java.util.Date;

构造方法 :
	Date() : 得到的时间是创建Date对象的瞬间;
    Date(long date) : 创建Date对象
    	1. 把时间归零(new Date(0)) 
    	2. 再加上传入的毫秒值定位的瞬间(new Date(1000))
    	
成员方法 :
	long getTime()  : 获取当前时间对象的毫秒值
    或:System.currentTimeMillis()
    void setTime(long time) : 设置当前时间的毫秒值   
    	1.  把时间归零 2. 再加上传入的毫秒值定位的瞬间
    	
时间类型的转换操作:
   long --> Date
   		1. Date(long date) : 创建Date对象
   		2. void setTime(long time) : 设置当前时间的毫秒值
   		
   Date --> long
   		long getTime()

SimpleDateFormat---->日期格式化类

SimpleDateFormat : 简单日期格式化的类
	功能 :
		1. 格式化日期
			Date对象 --> String对象
		2. 解析日期
			String对象 --> Date对象
构造方法:			
    SimpleDateFormat 创建对象的方法 :
        SimpleDateFormat(String pattern) : 传入日期格式代码创建SimpleDateFormat对象;			String pattern : 日期格式代码
                y : 年 M : 月 d : 日 H : 小时 m : 分钟 s : 秒
                "yyyy年MM月dd日 HH时mm分ss秒"
			
格式化日期 :    
	Date对象 --> String对象
	String format(Date date)
    例如:
     //创建日期格式化的类
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        //格式化日期
        Date date = new Date();
        String format = sdf.format(date);
        System.out.println("date = " + date);//date = Sat Sep 03 22:27:32 CST 2022
        System.out.println("format = " + format);//format = 2022年09月03日 22时27分32秒
    
解析日期 :     
	String对象 --> Date对象
	//注意 : 日期格式和要解析的字符串时间格式要匹配
	Date parse(String strTime)

	例如:
        //创建日期格式化的类
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        //解析字符串时间
        String birthTime = "1991年01月01日 00时00分00秒";
        Date date = sdf.parse(birthTime);
        System.out.println("date = " + date);//date = Tue Jan 01 00:00:00 CST 1991
   

小案例:

public static void main(String[] args) throws ParseException {
        //计算我活了多久
        //现在时间
        long now = System.currentTimeMillis();

        //出生时间
        Scanner sc = new Scanner(System.in);
        System.out.println("请您输入您的出生年与日 : (yyyy-MM-dd HH:mm:ss)");
        String birthStr = sc.nextLine(); //String时间

        //String时间 --> Date时间 解析
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date birthDate = sdf.parse(birthStr);

        //Date时间 --> long时间
        long birthTime = birthDate.getTime();

        //计算
        long days = (now - birthTime) / (1000 * 60 * 60 * 24);
        System.out.println("您已经活了 " + days + " 天,人的一生一共有3万多天,请珍爱生命远离赌毒~");
    }

image-20220903192900196

Calendar---->日历类

Calendar : 日历类 
	//时间文化差异 : 一周的第一天是周日 , 月份的索引 0 - 11
	
//创建日历类对象
Calendar calendar = Calendar.getInstance(); 直接通过类名获取此"抽象类的对象"//多态 : 时间指向现在

成员方法 :
	1. 获取和设置日历字段的值
			//int field : 要获取或者设置的日历字段的值
		    int get(int field)
        	void set(int field,int value)
        	void set(年,月,日,时,分,秒)
   2. 日历类的转换功能 
   		 Calendar --> Date
   		 		Date getTime(): 
		 Date --> Calendar
		 		void setTime(Date date)
             
   3. 日历类对象直接转成毫秒值
   		Calendar --> 毫秒值
   			long getTimeInMillis()  
        毫秒值 --> Calendar     
        	void setTimeInMillis(long millis)   

1662168368704

DateTimeFormatter---->JDK1.8

LocalDateTime时间和字符串时间之间的转换问题 : 格式化和解析

DateTimeFormatter : 只提供日期 格式化和解析 格式的类
	如何获取DateTimeFormatter类的对象 :
		static DateTimeFormatter ofPattern(String pattern)  
            	String pattern : 日期格式代码 

格式化和解析的方法都来自于LocalDateTime类:
    格式化 : LocalDateTime --> String
		String format(DateTimeFormatter formatter)
        
        例如:
        //创建LocalDateTime对象
        LocalDateTime now = LocalDateTime.now();
        //创建DateTimeFormatter对象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        //格式化
        String format = now.format(formatter);
        System.out.println("format = " + format);
        
    解析 : String --> LocalDateTime
    	static LocalDateTime parse(String strTime,DateTimeFormatter formatter)
        
        例如:
        //日期格式对象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
        //解析字符串时间到LocalDateTime
        LocalDateTime localDateTime = LocalDateTime.parse("2011年11月11日 11:11:11", formatter);
        System.out.println("localDateTime = " + localDateTime);

LocalDateTime/LocalDate/LocalTime--->JDK1.8开始

LocalDateTime/LocalDate/LocalTime : 本地年月日时分秒/本地年月日/本地时分秒

LocalDateTime 为例讲解 :
	LocalDateTime是一个不可变的日期时间对象,代表日期时间,通常被视为年 - 月 - 日 - 时 - 分 - 秒。 时间表示为纳秒精度.
	
如何创建对象 : 
		static LocalDateTime now() : 获取LocalDateTime对象,并把时间指向现在
		static LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second)  : 获取LocalDateTime对象,并把时间指向指定的时间 
		static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second)         

LocalDateTime的until方法(时间间隔方法)

long until(Temporal endExclusive, TemporalUnit unit)
    Temporal endExclusive : 是LocalDateTime的父接口
    TemporalUnit unit : 是时间单位的父接口
    	ChronoUnit : 时间单位的枚举类型 
    
    格式 : 起始时间LocalDateTime对象.until(结束时间LocalDateTime对象,时间单位对象)
        
        
    例如:
         //现在的
        LocalDateTime now = LocalDateTime.now();
        //出生日期的
        LocalDateTime birthDate = LocalDateTime.of(1991, 1, 1, 0, 0, 0);
        //时间间隔方法 -> until 直到
        long days = birthDate.until(now, ChronoUnit.DAYS);
        System.out.println("days = " + days);

LocalDateTime的get系列方法(获取值)

int getYear()  :获取年信息
int getMonthValue() :获取月份信息(1-12)
int getDayOfMonth(): 获取天信息      
int getHour() :获取小时信息    
int getMinute():获取分钟信息
int getSecond(): 获取秒钟信息    
-------------------------------------------    
DayOfWeek getDayOfWeek():获取星期信息  
int getDayOfYear():获取年中天信息  
Month getMonth(): 获取月份信息(枚举对象返回)   
int getNano():获取纳秒信息     

LocalDateTime的plus系列方法(加)

plus系列方法是对日期字段进行做加法的操作!
LocalDateTime plusYears(long years) 
LocalDateTime plusMonths(long months)   
LocalDateTime plusDays(long days)  
LocalDateTime plusHours(long hours)  
LocalDateTime plusMinutes(long minutes)  
LocalDateTime plusSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime plusNanos(long nanos)  
LocalDateTime plusWeeks(long weeks)  
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
    2. 如果你传入的是正数就是做加法,如果你传入的是负数就是做减法    

LocalDateTime的minus系列方法(减)

minus系列方法是对日期字段进行做减法的操作!
LocalDateTime minusYears(long years) 
LocalDateTime minusMonths(long months)   
LocalDateTime minusDays(long days)  
LocalDateTime minusHours(long hours)  
LocalDateTime minusMinutes(long minutes)  
LocalDateTime minusSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime minusNanos(long nanos)  
LocalDateTime minusWeeks(long weeks) 
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变
    2. 如果你传入的是正数就是做减法,如果你传入的是负数就是做加法       

LocalDateTime的with系列方法(设置值)

with系列方法是对日期字段进行设置值的操作!
LocalDateTime withYears(long years) 
LocalDateTime withMonths(long months)   
LocalDateTime withDays(long days)  
LocalDateTime withHours(long hours)  
LocalDateTime withMinutes(long minutes)  
LocalDateTime withSeconds(long seconds) 
-------------------------------------------------    
LocalDateTime withNanos(long nanos)  
LocalDateTime withWeeks(long weeks) 
    
注意:
	1. 记得接收, 因为时间修改是生成新的LocalDateTime对象,老的LocalDateTime对象不会改变

Period----->年月日的时间间隔类

Period 代表年月日的时间间隔类

得到Period对象
	static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive)  
    
    
例如:
    public static void main(String[] args) {
        //创建时间间隔对象
        Period between = Period.between(LocalDate.of(1991, 1, 1), LocalDate.now());
        System.out.println("between = " + between);//P 31Y8M2D
        int days = between.getDays();
        System.out.println("days = " + days);//days = 2
        //long toTotalMonths()
        System.out.println("between.toTotalMonths() = " + between.toTotalMonths());//
between.toTotalMonths() = 380
    }

Duration------->时分秒的时间间隔类

Duration 代表时分秒的时间间隔类

得到Duration对象
	static Duration between(Temporal startInclusive, Temporal endExclusive)  
    //Temporal :  是LocalDateTime/LocalDate/LocalTime的父接口,语法上参数都可以接受; 但是在Duration的between方法的逻辑上不可以接收LocalDate的;
    
to系列方法 : 计算时间间隔对象中表示的时间值
	toDays() : 计算间隔了多少天
    
    例如:
    public static void main(String[] args) {
        //创建Duration对象
        Duration between = Duration.between(
                LocalDateTime.of(1991, 1, 1,0,0,0)
                , LocalDateTime.now());
        //PT 277643H14M16.296S
        System.out.println("between = " + between);
        //计算你活了多久
        long days = between.toDays();
        System.out.println("days = " + days);
    }

标签:String,板块,long,int,API,时间,LocalDateTime,Date,方法
来源: https://www.cnblogs.com/Jing-com/p/16653941.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有