Java中的日期处理类
在Java中可以使用Date类和Calendar类来处理日期
但是Date类很多方法都过时了,推荐使用Canlendar类来处理日期,并对日期的格式化做了介绍。下面的部分将会逐一介绍
Date类
Java提供了Date类来处理日期、时间,Date类既包含日期,也包含时间。Date类从JDK1.0版本就开始存在,存在时间久远,提供的6个构造器中,已有4个建议放弃使用,目前使用的为:
- Date():生成一个以系统当前时间日期为准的Date对象。
- Date(long date):根据指定的long整型数来生成一个Date对象。
- boolean after(Date when):判断日期是否在指定的日期when之后
- boolean before(Date when):判断日期是否在指定的日期when之前。
- int compareTo(Date antherDate):比较两个日期大小,后面时间大于前面时间返回-1,否则返回1.
- Boolean equals(Object obj):两个时间表示同一时间是返回true
- long getTime():返回该对象对应long型整数
- void setTime(long time):设置该对象的时间。
public class DateTest {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis();
Date d1 = new Date(start);
Thread.sleep(3000);
long end = System.currentTimeMillis();
Date d2 = new Date(end);
System.out.println(d1.before(d2));
System.out.println(d1.after(d2));
System.out.println(d1.getTime());
System.out.println(d1.equals(d2));
}
}
Calendar类
Calendar是一个抽象类,用于表示日历。因为Date类在设计上存在一些缺陷,所以Java提供Calendar类来更好的处理日期和时间。
Calendar类不能直接创建,可以通过类方法来创建一个Calendar的子类,Java本身提供了GregorianCalendar子类,通过getInstance()方法返回默认时区和语言环境获得一个日历。返回的实例就是Java提供的默认子类。
Calendar类提供的常用方法:
- void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
- int get(int field):返回指定日历字段的值。
- int getActualMaximum(int field):返回指定日历字段的可能拥有的最大值。
- int getActualMinimum(int field):返回指定日历字段的可能拥有的最小值。
- void roll(int field,int amout):与add方法相似,区别在于超过该字段的最大范围时,也不会向上一个字段进位。
- void set(int field,int value):将给定的日历字段设置为给定值。
- void set(int year,int month,int date):设置Calendar对象的年、月、日3个字段值。
- void set(int year,int month,int date,int hourOfDay,int minute,int second):设置Calendar对象的年、月、日、时、分、秒6个字段的值。
public class CalendarTest {
public static void main(String[] args) {
//通过类方法获得实例
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.YEAR));
// calendar.add(Calendar.DATE, 1);
// System.out.println(calendar.get(calendar.DATE));
//roll的用法 (当超过范围不会向上进位)
calendar.roll(Calendar.MONTH,10 );
System.out.println(calendar.get(calendar.YEAR));
System.out.println(calendar.get(calendar.MONTH));
//获取该字段可能拥有的最大值
System.out.println(calendar.getMaximum(calendar.MONTH));
//自己设置时间
calendar.set(2016, 06, 8);
System.out.println(calendar.get(calendar.YEAR)); //返回设置后的时间
//Date和Calendar类之间的转换
Date date = calendar.getTime();
//使用SimpleDateFormat格式化输出时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 hh点mm分ss秒");
System.out.println(sdf.format(date));
}
}
使用DateFormat格式化日期
DateFormat是一个抽象类,它也提供了几个工厂方法用于获取DateFormat对象。返回的都是DateFormat对象的子类实例,是同一个类型的实例。
虽然返回的都是同一个对象类型的实例,但是根据不同的工厂方法,返回的对象在格式化时间对象时,处理不同部分的信息。
- getDateInstance():返回一个日期格式器,只对日期进行格式化。
- getTimeInstance():返回一个时间格式器,只对时间进行格式化。
- getDateTimeInstance():返回一个日期、时间格式器,既对时间又对日期进行格式化。
- getInstance():返回一个默认的系统相关的日期、时间格式器。
public static void main(String[] args) throws Exception{
Date date = new Date();
//默认为中国常用格式
DateFormat format = DateFormat.getInstance();
System.out.println(format.format(date));
//返回日期、时间格式器国际统一标准
format = DateFormat.getDateTimeInstance();
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为简洁型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为中等型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.CHINA);
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为完整型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.LONG, Locale.CHINA);
System.out.println(format.format(date));
//返回日期格式器,同时指定格式类型,为复杂型,指定要显示哪个国家的类型
format = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);
System.out.println(format.format(date));
}
使用SimpleDateFormat格式化日期
SimpleDateFormat是DateFormat的子类,是一种更简单的日期格式,以为我们指定的格式对日期进行格式化。
注意使用的时候在new出对象的时候指定想要看到的日期格式即可。(具体代码上面例子有)
Java中的日期处理类的更多相关文章
- Java中的日期表示类
一.概述 Java中的日期类设计的比较失败,刚开始使用Date来计算时间,后来大部分Date类的方法都过时了:想用Calendar类代替Date类,然而Calendar类也是不尽如人意.下面简单介绍下 ...
- Java中的日期操作
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...
- Java中Date和Calender类的使用方法
查看文章 Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...
- 填坑:Java 中的日期转换
我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方 ...
- 第七节:详细讲解Java中的日期,java.util.date
前言 大家好,给大家带来详细讲解Java中的日期,java.util.date的概述,希望你们喜欢 类Date Java.lang.Object->java.util.Date public c ...
- Java中的日期和时间
Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...
- Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...
- JAVA中封装JSONUtils工具类及使用
在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...
- Delphi与Java中的日期互换
在最近做的一个项目中用到了Java和Delphi,发现它们不能正确读取对方的日期类型,如在Java中写入一个值为“2007-12-1”的日期值,通过Delphi读取却不是这个值了.通过查阅资料,发现两 ...
随机推荐
- delegate,notifucation,KVO三种模式实现通信的优缺点
在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delega ...
- hdu Big Number
#include <cstdio> #include <cstring> #include <cmath> using namespace std; int mai ...
- HTTP断点续传(分块传输)(HTTP头格式非常清楚)
简述 断点续传:指的是在上传/下载时,将任务(一个文件或压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传/下载,如果碰到网络故障,可以从已经上传/下载的部分开始继续上传/下载未完成的部分, ...
- 查询Sqlserver 表结构信息 SQL
SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = ...
- VS项目如何添加到svn
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.这里就讲一下VS2010如何将项目导入SVN版本控制. 工具 ...
- poj2823:单调队列入门题
今天学习了一下单调队列这种数据结构,思想不是很难 参考资料:http://www.cnblogs.com/Jason-Damon/archive/2012/04/19/2457889.html 然后自 ...
- C++中的重载、覆盖、隐藏
前几天面试时被问及C++中的覆盖.隐藏,概念基本答不上来,只答了怎么用指针实现多态,也还有遗漏.最终不欢而散.回来后在网上查找学习了一番,做了这个总结.其中部分文字借用了别人的博客,望不要见怪.引用的 ...
- 使用vue-cli脚手架安装的eslint 容易犯错的地方
1. 函数名字与括号之间要有空格. 2. 不要使用双引号 3. 不要有多月的空行 4.函数参数的逗号后要有空格 5.每个结束语句以后不用加“分号”
- The secret of ROWID
表里每个数据行都有一个行头部,在这里存放了该行数据所包含的列的数量,以及锁定标记等.当某个事务更新某条记录时,会在该数据行的头部记录所用到的ITL槽号以及锁定标记.接下来则是列长度以及列的值.Orac ...
- Android 之 Shape (圆角输入框)
1 简介 本文主要介绍通过 shape 来设置 EditText 的圆角. 2 shape 的设置 shape_life_search.xml 放在 res/drawable 文件夹内 < ...