Java 基本日期类使用(一)
一、java.util.Date
Date表示特定的瞬间,精确到毫秒,其子类有Date、Time、Timestap。默认情况下输出的Date对象为:Mon Oct 13 17:48:47 CST 2014,一般不是我们想要的,我们可以调用Date的一些方法来获取我们想要的日期格式,但是遗憾的是Date类中的大多数方法都已经废弃,如图1所示:
图 1 Date过期方法图
其中,public boolean after(Date when):测试此日期是否在指定日期之后-->当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间晚,才返回 true;否则返回 false。
public boolean before(Date when):测试此日期是否在指定日期之前-->当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间早,才返回 true;否则返回 false。
public int compareTo(Date anotherDate):如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。
public boolean equals(Object obj):当且仅当参数不为 null,并且是一个表示与此对象相同的时间点(到毫秒)的 Date 对象时,结果才为 true。
示例1:
public static void main(String[] args) {
//Date(long date) date即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数
Date firstDate = new Date(125);
//无参构造器,返回当前时间,精确到毫秒
Date secondDate = new Date();
int order = firstDate.compareTo(secondDate);
String str = "";
if (order == 0) {
str = "相同";
} else {
str = order > 0 ? "firstDate在后" : "secondDate在后";
}
System.out.println(firstDate + "\t" + secondDate);
System.out.println("firstDate 是否在secondDate之后:\t"+ firstDate.after(secondDate));
System.out.println("firstDate 是否在secondDate之前:\t"+ firstDate.before(secondDate));
System.out.println("firstDate 和 secondDate日期的顺序:\t"+ str);
System.out.println("firstDate 和 secondDate是否相等:\t"+ firstDate.equals(secondDate));
}
结果1:
Thu Jan 01 08:00:00 CST 1970 Mon Oct 13 18:33:33 CST 2014
firstDate 是否在secondDate之后: false
firstDate 是否在secondDate之前: true
firstDate 和 secondDate日期的顺序: secondDate在后
firstDate 和 secondDate是否相等: false
示例2:
Date firstDate = new Date(System.currentTimeMillis());
// 无参构造器,返回当前时间,精确到毫秒
Date secondDate = new Date();
System.out.println(firstDate.getTime() + "\t" + secondDate.getTime());
System.out.println("firstDate 和 secondDate是否相等:\t" + firstDate.equals(secondDate));
结果2:
1413199559364 1413199559364 #getTime()值相等则两个Date对象的equals比值为true
firstDate 和 secondDate是否相等: true
二、java.sql.Date
java.sql.Date是java.util.Date的子类,其自带方法中只有setTime(long date)、valueOf(String s)、toString()未过时。其中,toString方法输出的日期格式为:yyyy-mm-dd格式。valueOf(String s)将 JDBC 日期转义形式的字符串转换成 Date 值,s - 表示 "yyyy-mm-dd" 形式的日期的 String 对象。
示例:
public static void main(String[] args) {
java.sql.Date date = new java.sql.Date(System.currentTimeMillis());
System.out.println(date);
date.setTime(2222222222222L);
System.out.println(date);
java.sql.Date date1 = java.sql.Date.valueOf("2014-12-12"); //形参必须是:"yyyy-mm-dd"格式:
System.out.println(date1);
}
结果:
2014-10-13
2040-06-02
2014-12-12
三、Timestamp
java.sql.Timestamp在Date的基础上衍生出public void setNanos(int n)方法,以获取Timestamp 对象的小数秒组件。
示例:
Timestamp timestamp = Timestamp.valueOf("2014-10-12 12:12:12.123");
// timestamp.getNanos()的值为:123000000
Timestamp timestamp2 = Timestamp.valueOf("2014-10-12 12:12:12");
// timestamp.getNanos()的值为:0
需要注意的是Timestamp的toString返回格式为:yyyy-mm-dd hh:mm:ss.fffffffff。
示例:
public static void main(String[] args) {
// 获取系统当前时间
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
System.out.println(timestamp);
//使用 yyyy-mm-dd hh:mm:ss.fffffffff 格式的 String 对象。最后ffffff的可以不要
// timestamp2.getNanos()的值为:123000000
Timestamp timestamp2 = Timestamp.valueOf("2014-10-12 12:12:12.123");
System.out.println(timestamp2);
System.out.println(timestamp2.getNanos());
}
结果:
2014-10-13 19:15:48.757
2014-10-12 12:12:12.123
123000000
四、java.util.Calendar
java.util.Calendar 是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();可以通过get()方法获取年月日、时分秒。
示例:
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
getyyyyMMdd(calendar);
calendar.set(Calendar.YEAR, 2016); // 设置年份为2016年
calendar.set(Calendar.DAY_OF_MONTH, 30); // 设置为30号
getyyyyMMdd(calendar);
calendar.add(Calendar.YEAR, 2); // 在原有年份上加上2年,实际应用中可用户查询今年、明年等
calendar.add(Calendar.MONTH, 2); // 在原有月份上加上2
getyyyyMMdd(calendar);
}
public static void getyyyyMMdd(Calendar calendar){
System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE)+ ":" + calendar.get(Calendar.SECOND) );
}
结果:
2014-10-16 9:3:49
2016-10-30 9:3:49
2018-12-30 9:3:49
java.util.GregorianCalendar是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
示例2:
Calendar calendar = new GregorianCalendar(2014, 10, 16, 15, 55, 44);//陷阱:Calendar的月份是0~11,12月份返回:0
//定义日期的中文输出格式,并输出日期
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 E", Locale.CHINA);
System.out.println("获取日期中文格式化化输出:" + df.format(calendar.getTime()));
System.out.println("--------通过Calendar获取日期中年月日等相关信息--------");
System.out.println("获取年:" + calendar.get(Calendar.YEAR));
System.out.println("获取月(月份是从0开始的):" + calendar.get(Calendar.MONTH));
System.out.println("获取日:" + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("获取时:" + calendar.get(Calendar.HOUR));
System.out.println("获取分:" + calendar.get(Calendar.MINUTE));
System.out.println("获取秒:" + calendar.get(Calendar.SECOND));
System.out.println("获取上午、下午:" + calendar.get(Calendar.AM_PM));
System.out.println("获取星期数值(星期是从周日开始的):" + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println();
结:2:
获取日期中文格式化化输出:2014年11月16日 03时55分44秒 星期日
--------通过Calendar获取日期中年月日等相关信息--------
获取年:2014
获取月(月份是从0开始的):10 //12月份返回:0
获取日:16
获取时:3
获取分:55
获取秒:44
获取上午、下午:1 //上午为:0
获取星期数值(星期是从周日开始的):1
Java 基本日期类使用(一)的更多相关文章
- Java学习——日期类
Java学习——日期类 摘要:本文主要记录了Java开发中用到的和日期有关的类以及对日期的操作. 部分内容来自以下博客: https://www.cnblogs.com/talk/p/2680591. ...
- java常用日期类总结
java 常用的日期类有三个Date.SimpleDateFormat.Calendar
- Java的日期类和日期格式化类
日期类: Date date = new Date(); // 获取当前的系统时间 2 System.out.println("年份:"+ date.getYear()); Cal ...
- java时间日期类(Date、DateFormat、Calendar)学习
1.Date类 常用方法:long getTime(),用于返回当前时刻的毫秒值 Date d = new Date(2000); System.out.println(d.getTime());// ...
- Java中日期类型和mysql中日期类型进行整合
1. java与mysql中日期.时间类型总结: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 mysql(版本:5.1.50)的时间日期类型如下: da ...
- Java基础——日期类Date
一.概述 date代表一个特定的时间,精确到毫秒 二.构造方法 方法名 说明 public Date() 分配一个Date对象,并初始化,以便它代表被分配的时间,精确到毫秒 public Date(l ...
- Java 基本日期类使用——格式化(二)
Java日期格式化主要有以下几种方式:java.text.DateFormat以及其子类java.text.SimpleDateFormat; DateFormat 是日期/时间格式化子类的抽象类,它 ...
- Java:日期类Date与Calendar
Timestamp类型与日期类型之间的转化? Timestamp timestamp = Timestamp.valueOf("2017-03-17 07:00:00"); Dat ...
- java Date日期类和SimpleDateFormat日期类格式
~Date表示特定的时间,精确到毫秒~构造方法:public Date()//构造Date对象并初始化为当前系统的时间public Date(long date) //1970-1-1 0:0:0到指 ...
随机推荐
- iOS 堆和栈 的理解
本文部分内容整理于网络,感谢原作者. 堆(heap)和栈(stack)是C/C++编程不可避免会碰到的两个基本概念.首先,这两个概念都可以在讲数据 结构的书中找到,他们都是基本的数据结构,虽然栈更为简 ...
- 【Android Training UI】创建自定义Views(Lesson 1 - 创建一个View类)
发布在我的网站 http://kesenhoo.github.io/blog/2013/06/30/android-training-ui-creating-custom-views-lesson-1 ...
- Qt之再谈窗体阴影
前面就窗口阴影已经写过一篇博客,使用九宫格的思路实现的,在我看来,凡是用程序能实现的尽量不要使用图片代替(在保证效率的前提下),今天再次分享关于我的一些小见解! 先看效果: 窗口阴 ...
- 位运算 (&|)与--或 一位数组表示多种意思~~ 与--或
var arr:Array = [0,1,2,4,8,16] var gate:int = 0; gate |= arr[1] gate |= arr[2] gate |= arr[3] trace( ...
- Android得到一个闹钟在第三方
收集报警信息 闹铃时间,闹铃备注信息 闹铃引起系统变化的点: 1. Send Notification (正点闹钟能够设置不发送) 2. Play audio 闹铃信息结构体 ClockInfo{ S ...
- 代理方法keywordAction与Fun的使用
代理是一种特殊的,指向某个方法模块所在的地址.一般来讲,那个方法模块,能够是一个普通的方法,很多其它的时候,是一团匿名的lamda表达式,即一个匿名方法.如今简单理解一下代理的简写方式,即Action ...
- ASP.NET MVC 学习之路-6
本文在于巩固基础 上文中使用的Code First创建数据库 本文将使用数据库生成模型 这里使用ADO.NET实体数据模型来生成模型 下面按照指导完成操作 下面看看如何使用这个框架 数据访问修改主要是 ...
- Http的Post和Get
原文:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET, ...
- Java学习—— for循环
For双重循环 /* 循环语句嵌套 */ class ForForTest { public static void main(String[] args) { /*int x,y = 0; for( ...
- Spark Streaming 实现读取Kafka 生产数据
在kafka 目录下执行生产消息命令: ./kafka-console-producer --broker-list nodexx:9092 --topic 201609 在spark bin 目 ...