1.Date类

构造方法

  • 第一个构造函数使用当前日期和时间来初始化对象。
    Date( )
  • 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
    Date(long millisec)

常用方法

  • long getTime( )
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
  • String toString( )
    把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
public class Test {public static void main(String[] args) {Date now = new Date();  //获取当前时间System.out.println(now.getTime());System.out.println(now);    //CST表示China Standard Time 即中国标准时间}
}执行结果为:
1631023915763
Tue Sep 07 22:11:55 CST 2021

2.SimpleDateFormat 格式化日期

Date类的toString方法输出的结果通常不符合中国人的阅读习惯,因此常常需要对其进行格式化输出。

public class Test {public static void main(String[] args) {Date now = new Date();  //获取当前时间SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss");System.out.println("当前时间为 " + sd.format(now));}
}

yyyy和MM为日期和时间的格式化编码;使用时记住常见的几个即可。
SimpleDateFormat类的parse()方法用来解析字符串为时间,对字符串表示时间的处理中也较为常用

public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入时间yyyy-MM-dd");String str = sc.nextLine();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = new Date();try {date = sdf.parse(str);} catch (ParseException e) {e.printStackTrace();}finally {System.out.println(date);}}
}

3.Calendar类

  • 创建一个代表系统当前日期的Calendar对象
    Calendar c = Calendar.getInstance();//默认是当前日期
public class Test {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();System.out.println(calendar);System.out.println(calendar.get(Calendar.YEAR));    //获取年份System.out.println(calendar.get(Calendar.MONTH)+1); //获取月份System.out.println(calendar.get(Calendar.DAY_OF_MONTH));    //获取几号System.out.println(calendar.get(Calendar.DAY_OF_WEEK)-1);   //获取星期几}
}

此处有两个小坑需要注意
Calendar类获取月份时要加1
Calendar类获取星期几要减1

 /*** Field number for <code>get</code> and <code>set</code> indicating the* month. This is a calendar-specific value. The first month of* the year in the Gregorian and Julian calendars is* <code>JANUARY</code> which is 0; the last depends on the number* of months in a year.* /

Calendar类中一月的值为0,为符合日常习惯需要加1
Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。该类默认星期天为第一天,故需要减1。

4. LocalDate/LocalTime/LocalDateTime类

  • java.time.LocalDate ->只对年月日做出处理
  • java.time.LocalTime ->只对时分秒纳秒做出处理
  • java.time.LocalDateTime ->同时可以处理年月日和时分秒
    相比Date类,线程安全;相比Calendar类,获取月份和星期更加符合日常习惯,所以JDK1.8后建议使用LocalDate/LocalTime类对事件和日期进行处理。
public class Test {public static void main(String[] args) {//三种创建LocalDate实例的方法LocalDate now = LocalDate.now(); //获取当前日期LocalDate date = LocalDate.of(2018, 7, 1);LocalDate date1 = LocalDate.parse("1996-09-19");System.out.println(date1);//三种创建LocalTime实例的方法LocalTime time = LocalTime.now();//当前时间LocalTime ofTime = LocalTime.of(16,30,25);LocalTime parseTime = LocalTime.parse("12:00:01");int year = now.getYear(); //获取年int month = now.getMonthValue();    //获取月份int day = now.getDayOfMonth();  //获取天System.out.println(year + " " + month + " " + day);int hour = time.getHour();  //获取时int minute = time.getMinute();  //获取分int second = time.getSecond();  //获取秒System.out.println(hour + " " + minute + " " + second);}
}执行结果
1996-09-19
2021 9 8
9 20 58

此外还有获取当月第一天、当月最后一天等实用的小方法可以直接去使用。

public class Test {public static void main(String[] args) {LocalDate date = LocalDate.now();// 取本月第1天:LocalDate firstDayOfThisMonth = date.with(TemporalAdjusters.firstDayOfMonth()); // 取本月第2天:LocalDate secondDayOfThisMonth = date.withDayOfMonth(2); // // 取本月最后一天,再也不用计算是28,29,30还是31:LocalDate lastDayOfThisMonth = date.with(TemporalAdjusters.lastDayOfMonth()); // 取下一天:LocalDate firstDayOfNextMonth = lastDayOfThisMonth.plusDays(1); LocalDate firstMondayOf2017 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2017-01-02//输出System.out.println(firstDayOfThisMonth);System.out.println(secondDayOfThisMonth);System.out.println(lastDayOfThisMonth);System.out.println(firstDayOfNextMonth);System.out.println(firstMondayOf2017);}
}执行结果
2021-09-01
2021-09-02
2021-09-30
2021-10-01
2017-01-02

Java时间和日期的处理相关推荐

  1. Java 时间与日期处理

    Java 时间与日期处理 王下邀月熊 18 小时前 Java 时间与日期处理 从属于笔者的 现代 Java 开发系列文章,涉及到的引用资料声明在 Java 学习与实践资料索引中. Java 时间与日期 ...

  2. Java 时间与日期处理 1

    Java 时间与日期处理 从属于笔者的现代 Java 开发系列文章,涉及到的引用资料声明在 Java 学习与实践资料索引中. Java 时间与日期处理 在 Java 8 之前,我们最常见的时间与日期处 ...

  3. JAVA 时间和日期的API

    从JDK8开始,Java.time包提供的新的日期和时间的API. 新的API严格区分了时刻,本地日期,本地时间,而且运算也更加方便. 其次,新API类型几乎全部是不变类型(和String使用类似) ...

  4. Java时间和日期指南

    长期以来,正确处理日期,时间,时区,夏时制,and年等一直是我的烦恼. 本文并不是一个全面的指南时域,请参阅日期和时间在Java中 -更详细,但略有下降,ekhem,日期. 它仍然是相关的,但是没有涵 ...

  5. Java 时间和日期类型的 Hibernate 映射

    以下情况下必须显式指定 Hibernate 映射类型 一个 Java 类型可能对应多个 Hibernate 映射类型. 例如: 如果持久化类的属性为 java.util.Date 类型, 对应的 Hi ...

  6. Java进阶,时间与日期,包装类,正则表达式

    Java时间与日期,包装类,正则表达式 一.时间与日期 1.Date Date类概述 Date类代表当前所在系统的日期时间信息. Date的构造器 名称 说明 public Date() 创建一个Da ...

  7. java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...

    转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...

  8. Java时间日期格式转换

    突然忘记了时间格式怎么转换,特此做个记录 Java时间格式转换大全import java.text.*; import java.util.Calendar; public class VeDate ...

  9. 【Java】7.3 基本类 7.4 Java 8 的日期、时间类

    目录 String.StringBuffer和StringBuilder类 Rondom类 BigDecimal类 Java 8 新增的日期.时间包 String.StringBuffer和Strin ...

最新文章

  1. .NET中防止Access数据库下载
  2. 思考--为何早晨型人更容易成功
  3. rpm包安装mysql5.5
  4. OpenStack 存储服务 Cinder存储节点部署LVM (十四)
  5. AmazonSQS和Spring用于消息传递队列
  6. wpf将文字转化为图形_将创新转化为实际应用
  7. mysql-5.7.24 linux下载_Linux下安装mysql-5.7.24
  8. react笔记-设计复合式控件(三)
  9. 面试 | 从一个API缓存演化,详细了解Redis各项功能
  10. JS报错: Uncaught SyntaxError: Invalid shorthand property initializer
  11. Python Bug: TypeError: a bytes-like object is required, not ‘str
  12. 2014手机号码归属地数据库
  13. Jquery 进度条集锦
  14. dell服务器pe系统安装win7系统,dell戴尔pe重装win7系统
  15. ODU帧转OTU帧流程
  16. QTimer计时速度不断加快问题和QT中show函数失效问题的思考和处理
  17. 老男孩教育春节假期安排
  18. 基于JAVA和MYSQL数据库实现的图书资料管理信息系统
  19. 6.1. Meanshift和Camshift
  20. 《数据结构课程实践》_01_学生成绩档案管理系统_准备工作

热门文章

  1. 分享一份嵌入式软件工具清单!
  2. 情人节撸一个表白页面
  3. 已解决COLS value must be >= 2 and <= 1182: got 1 initscr(): Unable to create SP
  4. 简单句的核心构成 n. + 谓语v.
  5. 怎样选择使用特殊素材的乒乓球底板
  6. 重磅消息:Google和网易集体震荡,联手让一部分游戏先...送福利!
  7. 【沐风老师】3dMax创建缝线插件StitchLines使用方法详解
  8. 学习python的正确姿势——
  9. 怎样消掉计算机桌面阴影,电脑桌面图标有蓝色阴影是怎么回事?怎么把它去掉...
  10. 乳清分离蛋白的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告