Java常用类:时间相关类

java.util.Date java.util.Calendar java.time
基本废弃,但有一个方法仍在使用 目前程序中最常用的, 是抽象类 Java 8 推出新的时间API

java.util.Date

getTime() 返回自1970.1.1以来的毫秒数

import java.util.Date;
public class DateTest {public static void main(String[] args) {Date d = new Date();System.out.println(d);System.out.println(d.getTime()); //返回 1970.1.1 00:00:00 到现在的毫秒数}
}
输出:
Mon May 18 11:07:28 CST 2020
1589771248557

java.util.Calendar

Calendar c=Calendar.getInstance();
Calendar c= new GregorianCalendar();

以上两种方法都可调用

方法 内容
get(Field) 获取时间中每个属性的值. 注意, 月份0-11
getTime() 返回相应的Date对象
getTimeInMillis() 返回自1970.1.1以来的毫秒数
set(Field,amount)/set(year,month,day) 设置时间字段,month的字段需+1输出
add(field, amount) 根据指定字段增加/减少时间
roll(field, amount) 根据指定字段增加/减少时间, 但不影响上一级的时间段
关于上述方法中(Field)的可用属性 内容
Calendar.YEAR 获取年
Calendar.MONTH 获取月,这里月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值,例:get(Calendar.MONTH) + 1
Calendar.DAY_OF_MONTH/Calendar.DATE 获取日
Calendar.HOUR 获取时
Calendar.HOUR_OF_DAY 获取时,24小时值
Calendar.MINUTE 获取分
Calendar.SECOND 获取秒
Calendar.DAY_OF_WEEK 获取西方国家的星期,西方国家星期从星期日开始计算,需要-1才是中国星期,例:get(Calendar.DAY_OF_WEEK)-1

具体操作见下:

import java.util.Calendar;
public class CalendarTest { Calendar calendar = Calendar.getInstance();    //test1方法,获取当前时间public void test1() {int year = calendar.get(Calendar.YEAR); // 获取年       int month = calendar.get(Calendar.MONTH) + 1; // 获取月,这里月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值     int day = calendar.get(Calendar.DAY_OF_MONTH);   // 获取日       int hour = calendar.get(Calendar.HOUR); // 获取时// int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示      int minute = calendar.get(Calendar.MINUTE);  // 获取分       int second = calendar.get(Calendar.SECOND); // 获取秒       int weekday = calendar.get(Calendar.DAY_OF_WEEK)-1; // 星期,英语国家星期从星期日开始计算System.out.println("现在是" + year + "年" + month + "月" + day + "日" + hour+ "时" + minute + "分" + second + "秒" + "星期" + weekday);}// test2方法,获取一年后的今天public void test2() {// 同理换成下个月的今天calendar.add(Calendar.MONTH, 1);calendar.add(Calendar.YEAR, 1); int year = calendar.get(Calendar.YEAR);  // 获取年        int month = calendar.get(Calendar.MONTH) + 1;// 获取月       int day = calendar.get(Calendar.DAY_OF_MONTH); // 获取日System.out.println("一年后的今天:" + year + "年" + month + "月" + day + "日");}//test3方法,获取任意一个月的最后一天(此方法无需判断闰年等,直接通过两个方法解决)public void test3() {// 假设求6月的最后一天int currentMonth = 6;// 先求出7月份的第一天,实际中这里6为外部传递进来的currentMonth变量calendar.set(calendar.get(Calendar.YEAR), currentMonth, 1);//设置时间字段,年,月,日calendar.add(Calendar.DATE, -1);//将当前时间减少一天即为上个月最后一天的时间int day = calendar.get(Calendar.DAY_OF_MONTH); // 获取(修改后)时间System.out.println("6月份的最后一天为" + day + "号");}// test4方法,设置日期public void test4() {calendar.set(Calendar.YEAR, 2000);//设置年份为2000年System.out.println("现在是" + calendar.get(Calendar.YEAR) + "年");calendar.set(2018, 7, 8);//月份是需要+1呈现       int year = calendar.get(Calendar.YEAR); // 获取年      int month = calendar.get(Calendar.MONTH)+1;  // 获取月    int day = calendar.get(Calendar.DAY_OF_MONTH);// 获取日System.out.println("现在是" + year + "年" + month + "月" + day + "日");}//test5,add和roll的区别public void test5() {     calendar.set(2018, 7, 8);//将时间设为2018年7月8日calendar.add(Calendar.DAY_OF_MONTH, -8);//人性化加减时间        int year = calendar.get(Calendar.YEAR);// 获取年       int month = calendar.get(Calendar.MONTH)+1; // 获取月        int day = calendar.get(Calendar.DAY_OF_MONTH);// 获取日System.out.println("2018.8.8, 用add减少8天,现在是" + year + "." + month + "." + day);calendar.set(2018, 7, 8);//将时间设为2018年7月8日calendar.roll(Calendar.DAY_OF_MONTH, -8);//只加减日这一项,不影响其他年月                year = calendar.get(Calendar.YEAR);// 获取年        month = calendar.get(Calendar.MONTH)+1;// 获取月        day = calendar.get(Calendar.DAY_OF_MONTH);// 获取日System.out.println("2018.8.8, 用roll减少8天,现在是" + year + "." + month + "." + day);}public static void main(String[] args) {//main函数CalendarTest c = new CalendarTest();c.test1();System.out.println("============");c.test2();System.out.println("============");c.test3();System.out.println("============");c.test4();System.out.println("============");c.test5();}
}
输出:
现在是2020年5月18日1时55分13秒星期1
============
一年后的今天:2021年5月18日
============
6月份的最后一天为30号
============
现在是2000年
现在是2018年8月8日
============
2018.8.8, 用add减少8天,现在是2018.7.31
2018.8.8, 用roll减少8天,现在是2018.8.31

java.time包

java.time包中的类 内容
LocalDate 日期类
LocalTime 时间类(时分秒-纳秒)
LocalDateTime LocalDate + LocalTime
Instant 时间戳

java.time.LocalDate:
LocalDate today = LocalDate.now();

方法 内容
getYear() 获取年
getMonthValue() 获取月
getDayOfYear()/getDayOfMonth() 获取这一天是这年/月的第几天
getDayOfWeek() 获取这天是这周的星期几
isLeapYear() 判断是否闰年
isBefore(LocalDate.of(year,month,day))/isAfter(LocalDate.of(year,month,day)) 判断当前时间时候在()内的时间之前或之后
atTime(LocalTime.now()) 获取当前时间
plusYears()/plusMonths()/plusDays()/plusWeeks() 当前时间加年/月/日/周
minusYears()/minusMonths()/minusDays()/minusWeeks() 当前时间减年/月/日/周
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.Period;
import java.time.temporal.TemporalAdjusters;public class DateUtil { public static void main(String[] args) { LocalDate today = LocalDate.now();//判断是否是闰年System.out.println("今年"+today.get()+"是闰年?"+today.isLeapYear());//今天和01/01/2015比较System.out.println("今天处于2015年1月1日之前吗? "+today.isBefore(LocalDate.of(2015,1,1)));//当前时间System.out.println("当前时间="+today.atTime(LocalTime.now()));//加减时间System.out.println("10天后:"+today.plusDays(10));System.out.println("3周后:"+today.plusWeeks(3));System.out.println("20个月后:"+today.plusMonths(20));System.out.println("10天前:"+today.minusDays(10));System.out.println("3周前:"+today.minusWeeks(3));System.out.println("20个月前:"+today.minusMonths(20));//调整时间System.out.println("First date of this month= "+today.with(TemporalAdjusters.firstDayOfMonth()));LocalDate lastDayOfYear = today.with(TemporalAdjusters.lastDayOfYear());System.out.println("Last date of this year= "+lastDayOfYear);//时间段计算Period period = today.until(lastDayOfYear);System.out.println("Period Format= "+period);System.out.println("Months remaining in the year= "+period.getMonths());        }
}
输出:
今年2020是闰年?true
今天处于2015年1月1日之前吗? false
当前时间=2020-05-18T14:37:43.224619700
10天后:2020-05-28
3周后:2020-06-08
20个月后:2022-01-18
10天前:2020-05-08
3周前:2020-04-27
20个月前:2018-09-18
First date of this month= 2020-05-01
Last date of this year= 2020-12-31
Period Format= P7M13D
Months remaining in the year= 7

java.time.LocalTime
LocalTime time = LocalTime.now();


import java.time.LocalTime;
import java.time.ZoneId;public class LocalTimeExample { public static void main(String[] args) { //当前时间  时分秒 纳秒LocalTime time = LocalTime.now();System.out.println("当前时间:"+time);//根据时分秒LocalTime specificTime = LocalTime.of(12,20,25,40);System.out.println("Specific Time of Day="+specificTime);//错误的时间参数 将报DateTimeException//LocalTime invalidTime = LocalTime.of(25,20);//上海时间LocalTime timeSH = LocalTime.now(ZoneId.of("Asia/Shanghai"));System.out.println("上海时间:"+timeSH);//一天当中第几秒LocalTime specificSecondTime = LocalTime.ofSecondOfDay(10000);System.out.println("10000th second time= "+specificSecondTime); }
}
输出:
当前时间:14:56:40.294609300
Specific Time of Day=12:20:25.000000040
上海时间:14:56:40.296612400
10000th second time= 02:46:40

java.time.LocalDateTime
LocalDateTime today = LocalDateTime.now();


import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.time.ZoneId;
import java.time.ZoneOffset;public class LocalDateTimeExample { public static void main(String[] args) {//当前日期 时分秒LocalDateTime today = LocalDateTime.now();System.out.println("当前日期:"+today);//根据日期, 时分秒来创建对象today = LocalDateTime.of(LocalDate.now(), LocalTime.now());System.out.println("Current DateTime="+today);//指定具体时间来创建对象LocalDateTime specificDate = LocalDateTime.of(2014, Month.JANUARY, 1, 10, 10, 30);System.out.println("Specific Date="+specificDate);//如时间不对,将报异常DateTimeException//LocalDateTime feb29_2014 = LocalDateTime.of(2014, Month.FEBRUARY, 28, 25,1,1);//上海时区LocalDateTime todayShanghai = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));System.out.println("上海时间:"+todayShanghai);//从01/01/1970 10000秒LocalDateTime dateFromBase = LocalDateTime.ofEpochSecond(10000, 0, ZoneOffset.UTC);System.out.println("10000th second time from 01/01/1970= "+dateFromBase); }
}
输出:
当前日期:2020-05-18T14:59:02.747737600
Current DateTime=2020-05-18T14:59:02.748862200
Specific Date=2014-01-01T10:10:30
上海时间:2020-05-18T14:59:02.750756800
10000th second time from 01/01/1970= 1970-01-01T02:46:40

java.time.Instant
Instant timestamp = Instant.now();

import java.time.Instant;
import java.util.Date;public class InstantExample { public static void main(String[] args) {//当前时间戳Instant timestamp = Instant.now();System.out.println("Current Timestamp = "+timestamp);//从毫秒数来创建时间戳Instant specificTime = Instant.ofEpochMilli(timestamp.toEpochMilli());System.out.println("Specific Time = "+specificTime);Date date = Date.from(timestamp); System.out.println("current date = " + date);}
}
输出:
Current Timestamp = 2020-05-18T07:00:33.743040100Z
Specific Time = 2020-05-18T07:00:33.743Z
current date = Mon May 18 15:00:33 CST 2020

Java常用类:时间相关类相关推荐

  1. java.util类,GitHub - yutaolian/JavaUtils: 总结的一些Java常用的util类

    JavaUtils 总结的一些Java常用的util类 ###1.格式化时间 SimpleDateFormat(DateFormat)实现线程安全的使用 众所周知SimpleDateFormat(Da ...

  2. Java常用类(数学相关类 /字符串相关类/时间相关类/格式化类)

    Java类库概述 Java类库文档 https://docs.oracle.com/javase/8/docs/api/ 可以下载文档离线版本(chm格式) https://blog.csdn.net ...

  3. java常用文件工具类

    java常用工具类(一) 主要是Java操作文件及及IO流的一些常用库,是Apache对java的IO包的封装,这里面文件类工具有两个非常核心的类FilenameUtils跟FileUtils,IO流 ...

  4. Java常用加密算法工具类

    import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; import ...

  5. Java 常用对象-Date类和Calender类

    2017-11-02 22:29:34 Date类:类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值 ...

  6. Java常用接口与类——String类、StringBuffer类、StringBuilder类

    >String的构造方式 //这两种方式字符串的值是相同的,但在内存中的地址不同: //s1是在常量池中,常量池中有一个hello,同一常量只会放入一次: String s1="hel ...

  7. java常用的日期类介绍

    开发过程中,对日期的处理十分普遍,掌握常用的日期转换方法,肯定会对工作有显著提升.声明一下,我本次使用的 jdk 1.8. 先说一说常用的Date.Calendar: 1.Date 提起Date,很多 ...

  8. 超详细的Java常用时间操作工具类

    import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java ...

  9. 28个Java常用的工具类

    源码下载:http://pan.baidu.com/s/1pJLSczD Base64.java Base64DecodingException.java CConst.java CharTools. ...

  10. Java常用接口与类——main方法/Object类/Scanner类

    >main方法 main函数详解: public修饰符:Java类由JVM调用,为了让JVM可以自由的调用这个main方法,所以使用public修饰符把这个方法给暴漏出来. static修饰符: ...

最新文章

  1. 【ACM】杭电OJ 1002
  2. 3.5.1 插入 3.5.2 修改
  3. java用if判断输入字符_java怎么用if判断输入的是不是数字
  4. redis主从集群搭建eclipse_【Redis】Redis 主从模式搭建
  5. IIS7 经典模式和集成模式的区别分析(转载)
  6. linux下安装php扩展curl
  7. SQL 语句语法简介(一)
  8. LeetCode()Minimum Window Substring 超时,但觉得很清晰。
  9. 我为NET狂~群福利:逆天书库
  10. 墨西哥FBA海运头程货代,墨西哥海运几天到?
  11. 北方果蔬谋定三链重构-农业大健康·随秀富:功能性农业理念
  12. 模拟人生畅玩版无线连接服务器超时,模拟人生™:畅玩版总是显示无法连接网络...
  13. ME909 ECM拨号上网总结
  14. Oracle中并行parallel详解
  15. C++实现24点算法
  16. FFmpeg添加x265/hevc编码器支持
  17. html 垂直底端对齐,CSS vertical-align(垂直对齐)
  18. Facebook个人账号相关问题?
  19. [288]关于MySQL的1064错误
  20. C语言界杠把子的书籍,你读过几本?

热门文章

  1. 大数据平台安全建设方案分享
  2. android平台下使用点九PNG技术
  3. Grocery Store OpenCart 自适应主题模板 ABC-0327
  4. 群控sdk二次开发完整调用API(厉害了我的哥。。。)
  5. 简易cpu设计_为简单而设计
  6. 微信小程序开发教程手册文档
  7. elasticsearch 基础 —— 字段数据类型
  8. opencv之去除图像白边
  9. (学习笔记)树莓派4B使用usb转串口通讯模块
  10. 高数 07.02 偏导数