首页 > 其他分享 >时间板块API方法的使用

时间板块API方法的使用

时间:2022-09-03 23:24:01浏览次数:55  
标签: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,方法
From: https://www.cnblogs.com/Jing-com/p/16653941.html

相关文章

  • File类API的使用
    File类File类:计算机中的文件和文件夹的类->File类计算机中的所有硬盘内容File类的构造方法***File(Stringpathname):直接传入目标文件的路径,让File对象指向......
  • 编译错误解决方法
    目录头文件缺少头文件缺少系统库文件,直接到该网站查找https://man7.org/linux/man-pages/man3/memset.3.html......
  • 使用VMware Workstation创建的虚拟机无法连接网络解决方法
    引言:最近打开虚拟机老是连接不上网络,在网上找这前两个方法试还是一直不行,最后才知道忘记重启DHCPservice和NATservice1、查看虚拟机的设置,确保虚拟机网络连接的方式勾选......
  • Null value was assigned to a property of primitive type原因及解决方法
    参考1报错:原因:查询出来的数据有null值,null值没办法赋double错误地方:解决方法:添加:IFNULL(,)修改后:ok解决参考2在action请求数据的过程中报出"Nullvaluewasass......
  • 【Linux】正确的关机方法
    【Linux】正确的关机方法-NW_KNIFE-博客园 https://www.cnblogs.com/ningvsban/p/3663337.html1)shutdown命令我们较常使用的是shutdown这个命令,这个命令可以安......
  • linux中快速清空文件内容的几种方法
    linux中快速清空文件内容的几种方法-Leone--博客园 https://www.cnblogs.com/doseoer/p/5966488.html这篇文章主要介绍了linux中快速清空文件内容的几种方法,需要的......
  • centos /dev/mapper/cl-root 100% 解决方法
    centos/dev/mapper/cl-root100%解决方法-青木天阁-博客园 https://www.cnblogs.com/elizwy/p/7722898.html本来是要在虚拟机上安装grpc进行测试的,结果发现gradle......
  • 正确配置Linux系统ulimit值的方法
    正确配置Linux系统ulimit值的方法-爱开卷360-博客园 https://www.cnblogs.com/ibook360/archive/2012/05/11/2495405.html在Linux下面部署应用的时候,有时候会遇上So......
  • 正确配置Linux系统ulimit/nproc值的方法
    正确配置Linux系统ulimit/nproc值的方法_wkwanglei的博客-CSDN博客_linuxnproc https://blog.csdn.net/wkwanglei/article/details/44199891在Linux下面部署应用的时候......
  • 详述 GitHub 中声明 LICENSE 的方法
    当我们在GitHub浏览一些开源项目时,我们经常会看到这样的标志:如上图所示,Apache-2.0,我们可以将其称之为开源许可证,那么到底开源许可证是什么呢?开源许可证即授权条款。......