java时间日期
java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
- 第一个构造函数使用当前日期和时间来初始化对象。
|
- 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。
|
Date对象创建以后,可以调用的方法;
序号 | 方法和描述 |
1 | boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。就是测试此日期是否在当前日期之后 |
2 | boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。就是测试此日期是否在指定日期之前 |
3 | Object clone( ) 返回此对象的副本。 |
4 | int compareTo(Date date) 比较调用此方法的日期与指定日期的顺序。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。 |
5 | int compareTo(Object obj) 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。 |
6 | boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。 |
7 | long getTime( ) 实现date到long的转换调用此方法:long time = new Date().getTime(); |
9 | void setTime(long time) 实现long到date的转换调用此方法:Date date = new Date(time); |
10 | String toString( ) 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。 |
获取当前日期时间
Java中获取当前日期和时间很简单,使用 Date 对象的 toString() 方法来打印当前日期和时间,如下所示:
import java.util.Date;
public class DateDemo {
public static void main(String args[]) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString()); } }
以上实例编译运行结果如下:
Fri May 10 22:00:36 CST 2019
使用 SimpleDateFormat 格式化日期
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类(把日期格式化为文本(字符串))。
- public SimpleDateFormat():使用默认的模式来创建一个SimpleDateFormat对象
- public SimpleDateFormat(String pattern):使用指定的模式(规则比如yyyy:MM:dd HH:mm:ss)来创建一个SimpleDateFormat对象
SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。例如:
package Date;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo2 {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date.toString());
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat.format(date));
SimpleDateFormat simpledateformate2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(simpledateformate2.format(date));
}
}
上面实例编译运行的结果为:
Sun May 12 21:03:41 CST 2019
2019-05-12 21:03:41
2019-05-12 09:03:41
在上面的代码中SimpleDateFormate确立了转换的格式,其中yyyy是指完整的公元年,MM是指月份,dd指的是日期,HH:mm:ss是 时 分 秒;
注意的是:MM是指月份,mm指的是分;HH指的是24小时制,而hh指的是12小时制;
解析字符串为时间
SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。
- public String format(Date date): 把一个日期对象格式化成一个字符串
- public Date parse(String dateStr): 把一个日期字符串解析成一个日期对象 注意的是要以指定格式解析
例如:
package Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class Parsedemo {
public static void main(String[] args) throws ParseException {
String time = "2019-03-02 12:23:30";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(dateFormat.parse(time));
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dateFormat1.parse(time));
}
}
上面实例编译运行的结果为:
Sat Mar 02 00:23:30 CST 2019
Sat Mar 02 12:23:30 CST 2019
calender类
calender类的功能比date类的强大的多,而且在实现方式上也比date类复杂许多;
calender类是一个抽象类,在实际使用时实现特定的子类对象,创建对象的过程对程序员来说是透明的。只需要使用getinstance方法创建即可;
创建一个代表系统当前日期的Calendar对象
Calendar
提供了一个类方法 getInstance
,以获得此类型的一个通用的对象。Calendar
的 getInstance
方法返回一个 Calendar
对象,其日历字段已由当前日期和时间初始化:
Calendar rightNow = Calendar.getInstance();
创建一个指定日期的Calendar对象
使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。
//创建一个代表2019年4月12日的calender对象
Calendar calendar = Calendar.getInstance();
calendar.set(2019,4,12);
Calendar类对象信息的设置
Set设置 如:
Calendar calender = Calendar.getInstance();
调用:
public final void set(int year,int month,int date)
利用字段类型设置
如果只设定某个字段,例如日期的值,则可以使用如下set方法:
public void set(int field,int value)
把calender对象代表的年份设置为2018年,其他的所有数值都会被重新计算;‘
calendar.set(Calendar.YEAR,2018);
其他的字段的属性set的意义按照此格式设置;
Add设置
例如给calender对象的日期加5,也是表示calender日期后第5 天的日期;同样的如果是 -5就表示calender日期前的第5天的日期;
calendar.add(Calendar.DATE,5);
calendar.add(Calendar.DATE,-5);
Calendar类对象信息的获得
Calendar c1 = Calendar.getInstance(); // 获得年份
int year = c1.get(Calendar.YEAR); // 获得月份
int month = c1.get(Calendar.MONTH) + 1; // 获得日期
int date = c1.get(Calendar.DATE); // 获得小时
int hour = c1.get(Calendar.HOUR_OF_DAY); // 获得分钟
int minute = c1.get(Calendar.MINUTE); // 获得秒
int second = c1.get(Calendar.SECOND); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)
int day = c1.get(Calendar.DAY_OF_WEEK);