Java时间和日期的处理
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时间和日期的处理相关推荐
- Java 时间与日期处理
Java 时间与日期处理 王下邀月熊 18 小时前 Java 时间与日期处理 从属于笔者的 现代 Java 开发系列文章,涉及到的引用资料声明在 Java 学习与实践资料索引中. Java 时间与日期 ...
- Java 时间与日期处理 1
Java 时间与日期处理 从属于笔者的现代 Java 开发系列文章,涉及到的引用资料声明在 Java 学习与实践资料索引中. Java 时间与日期处理 在 Java 8 之前,我们最常见的时间与日期处 ...
- JAVA 时间和日期的API
从JDK8开始,Java.time包提供的新的日期和时间的API. 新的API严格区分了时刻,本地日期,本地时间,而且运算也更加方便. 其次,新API类型几乎全部是不变类型(和String使用类似) ...
- Java时间和日期指南
长期以来,正确处理日期,时间,时区,夏时制,and年等一直是我的烦恼. 本文并不是一个全面的指南时域,请参阅日期和时间在Java中 -更详细,但略有下降,ekhem,日期. 它仍然是相关的,但是没有涵 ...
- Java 时间和日期类型的 Hibernate 映射
以下情况下必须显式指定 Hibernate 映射类型 一个 Java 类型可能对应多个 Hibernate 映射类型. 例如: 如果持久化类的属性为 java.util.Date 类型, 对应的 Hi ...
- Java进阶,时间与日期,包装类,正则表达式
Java时间与日期,包装类,正则表达式 一.时间与日期 1.Date Date类概述 Date类代表当前所在系统的日期时间信息. Date的构造器 名称 说明 public Date() 创建一个Da ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)...
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- Java时间日期格式转换
突然忘记了时间格式怎么转换,特此做个记录 Java时间格式转换大全import java.text.*; import java.util.Calendar; public class VeDate ...
- 【Java】7.3 基本类 7.4 Java 8 的日期、时间类
目录 String.StringBuffer和StringBuilder类 Rondom类 BigDecimal类 Java 8 新增的日期.时间包 String.StringBuffer和Strin ...
最新文章
- .NET中防止Access数据库下载
- 思考--为何早晨型人更容易成功
- rpm包安装mysql5.5
- OpenStack 存储服务 Cinder存储节点部署LVM (十四)
- AmazonSQS和Spring用于消息传递队列
- wpf将文字转化为图形_将创新转化为实际应用
- mysql-5.7.24 linux下载_Linux下安装mysql-5.7.24
- react笔记-设计复合式控件(三)
- 面试 | 从一个API缓存演化,详细了解Redis各项功能
- JS报错: Uncaught SyntaxError: Invalid shorthand property initializer
- Python Bug: TypeError: a bytes-like object is required, not ‘str
- 2014手机号码归属地数据库
- Jquery 进度条集锦
- dell服务器pe系统安装win7系统,dell戴尔pe重装win7系统
- ODU帧转OTU帧流程
- QTimer计时速度不断加快问题和QT中show函数失效问题的思考和处理
- 老男孩教育春节假期安排
- 基于JAVA和MYSQL数据库实现的图书资料管理信息系统
- 6.1. Meanshift和Camshift
- 《数据结构课程实践》_01_学生成绩档案管理系统_准备工作
热门文章
- 分享一份嵌入式软件工具清单!
- 情人节撸一个表白页面
- 已解决COLS value must be >= 2 and <= 1182: got 1 initscr(): Unable to create SP
- 简单句的核心构成 n. + 谓语v.
- 怎样选择使用特殊素材的乒乓球底板
- 重磅消息:Google和网易集体震荡,联手让一部分游戏先...送福利!
- 【沐风老师】3dMax创建缝线插件StitchLines使用方法详解
- 学习python的正确姿势——
- 怎样消掉计算机桌面阴影,电脑桌面图标有蓝色阴影是怎么回事?怎么把它去掉...
- 乳清分离蛋白的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告