Java中关于日期的处理方法

(1)Date

*  Date:

*  介绍是java.util包下的Date类,这个类是负责描述日期这类数据的。

*  Date主要是描述当前时间毫秒值对象。

*  它中的很多方法不利于国际化,已经被废弃。

*

*  Date是把当前的毫秒值封装成Date对象。

*  如何把一个毫秒值转成Date对象

*  Date()它是把当前的时间点的毫秒值转成Date对象

*  Date(long date) 把我们指定的一个毫秒值转成Date对象

*  setTime(long time) 把当前的Date对象设置成指定的毫秒值对应的那个日期对象

*

*  如何把一个Date对象转成毫秒值

*  Date类中有个getTime方法,可以把一个Date对象转成毫秒值

public class DateDemo {
    public static void main(String[] args) {
        //创建Date对象
        Date d = new Date();
        d.setTime(1380000910915L);
//        Date d = new Date(1380000910915L);
        System.out.println(d);
        System.out.println(d.toGMTString());
        System.out.println(d.toLocaleString());
        System.out.println(d.getTime());

    }
}

(2)DateFormat

DateFormat类:

这类位于java.text包下。

这个类是个抽象类,这个类不能直接new对象。

DateFormat类主要是把日期对象格式化成字符串数据

Date对象,通过DateFormat类,可以被格式化成字符串数据"xxxx-xx-xx hh:mm:ss"

DateFormat类还可以一个字符串数据解析成Date对象。

"xxxx-xx-xx hh:mm:ss"  解析成Date对象

格式化:把对象格式化成文本(字符串)

解析:把文本(字符串)变成对象

  由于DateFormat类是抽象类,它不能创建对象,但是这个类对外提供部分的静态方法,这些方法可以获取到本类的对象。

getDateInstance方法有重载,在获取DateFormat对象的时候可以指定风格

DateFormat.FULL:   2014年8月22日 星期五

DateFormat.LONG:    2014年8月22日

DateFormat.MEDIUM: 2014-8-22  是默认风格

DateFormat.SHORT:   14-8-22

  在使用DateFormat类中parse方法来解析一个字符串数据的时候,字符串数据给定的格式必须和获取DateFormat对象时指定的风格一致,

  这样才能够解析,否则解析失败。

//使用DateFormat类把字符串形式的日期数据解析成Date对象
    public static void method_2() throws ParseException {
        //字符串形式的日期数据
        String time = "2014年8月22日  星期五";
        //获取DateFormat对象
        DateFormat df = DateFormat.getDateInstance( DateFormat.FULL );

        //解析字符串
        Date d  = df.parse(time);

        System.out.println(d);

    }
    //使用DateFormat类对日期进行格式化
    public static void method_1() {
        //获取DateFormat对象
        //DateFormat df = DateFormat.getDateInstance();
        //DateFormat df = DateFormat.getDateInstance( DateFormat.SHORT );
        DateFormat df = DateFormat.getDateTimeInstance( DateFormat.MEDIUM,DateFormat.MEDIUM );
        //创建一个Date对象
        Date d = new Date();
        System.out.println(d);
        //对这个Date对象进行格式化
        String time = df.format(d);
        System.out.println(time);
    }

(3)SimpleDateFormat

当我们想按照自己指定的风格来解析字符串数据或者格式化日期 对象时,可以使用DateFormat的子类SimpleDateFormat。

/*
     *  演示使用SimpleDateFormat格式化Date对象
     *  "xxxx年xx/xx HH时mm分ss秒"
     */
    public static void method_4() {
        //获取Date对象
        Date d = new Date();
        //获取格式化对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM/dd HH时mm分ss秒");
        //对日期对象进行格式化
        String time = sdf.format(d);
        System.out.println(time);
    }
    /*
     * 演示使用SimpleDateFormat类解析指定的格式数据
     * "2014/08/22"  对应的格式:"yyyy/MM/dd"
     * "2414/08/22 23:23:23"    "yyyy/MM/dd HH:mm:ss"
     */
    public static void method_3() throws ParseException {
        //字符串形式的日期数据
        String time = "2414/08/22 23:23:23";
        //创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        //解析
        Date d = sdf.parse(time);
        System.out.println(d);
    }
/*
 * 需求:
 *         有2个字符串形式的日期数据,需要计算它们相距多少天?
 *             "2014年09/28 23时13分01秒"
 *             "2009-02月12日 12时02分01秒"
 *
 * 思路:
 *     要计算天数,首先需要把字符串形式的日期数据变成毫秒值,然后再通过毫秒值的相减得到时间差,然后再转成相距的天数。
 *     如何把字符串数据变成毫秒值呢?
 *         可以通过Date对象中的getTime方法,把一个Date对象转成毫秒值
 *         把字符串日期数据转成Date对象,可以使用SimpleDateFormat类完成
 */
public class DateTest {
    public static void main(String[] args) throws ParseException {
        String s1_time = "2014年09/28 23时13分01秒";
        String s2_time = "2013-09月27日 23时13分01秒";

        //获取格式器
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM/dd HH时mm分ss秒");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM月dd日 HH时mm分ss秒");

        //解析字符串
        Date d1 = sdf1.parse(s1_time);
        Date d2 = sdf2.parse(s2_time);

        //把当前的日期对象转成毫秒值
        long time_1 = d1.getTime();
        long time_2 = d2.getTime();

        long day = (Math.abs(time_1 - time_2))/1000/60/60/24;
        System.out.println(day);
    }
}

 

(4)Calendar

Calendar:

位于java.util包下。

这个类主要是用来描述日历数据。

Calendar类是个抽象类可以通过getInstance方法获取其实例。

它中定义很多静态成员变量,把日历上常见的年,月,日,时分秒,星期等数据都封装成静态的成员变量,

可以通过Calendar类直接获取其对应的数据。

在计算机中月份从0开始,0表示1月,1表示2月,11表示12月。

   星期也是从0开始,0表示星期日,1表示星期一

   我们获得了Calendar实例之后,就可以通过Calendar类中的get方法获取当前这个实例中封装的所有的数据。

   在使用get方法时,需要使用Calendar类本身和其中的静态成员变量结合使用。

   在Calendar类中有set方法,可以把Calendar实例中的对应的数据修改为我们想指定的具体年月日时分秒等信息

   add方法可以在指定的成员变量上修改它对应的数据

public class CalendarDemo {
    public static void main(String[] args) {
        method_2();
    }
    /*
     * 任意一年的2月有多少天
     *
     * 思路:
     *     获取一个Calendar实例,然后通过set方法把当前的月份设置为3月1日。
     *     然后在使用add方法,让当前的月中的天数-1.这时再去获取当前的天数,一定是2月的最后一天。
     */
    public static void method_2() {
        //获取Calendar实例
        Calendar c = Calendar.getInstance();

        //使用循环来提供年份
        for( int year = 1998;year<=2100;year++ ){
            //使用set方法设置当前年月日
            c.set(year, 2, 1);
            //使用add方法让天数-1
            c.add(Calendar.DAY_OF_MONTH, -1);
            System.out.println("当前"+year+"年的2月共计有:"+c.get(Calendar.DAY_OF_MONTH));
        }
    }
    //Calendar方法演示
    public static void method_1() {
        //获取Calendar实例
        Calendar c = Calendar.getInstance();
        System.out.println(c.get(Calendar.YEAR));
        //使用set方法来设置年月日
        //c.set(2011, 12, 12);
        c.add(Calendar.YEAR, -1);
        System.out.println(c.get(Calendar.YEAR));
    }
}
时间: 2024-10-06 20:46:45

Java中关于日期的处理方法的相关文章

Java中关于日期类那些方法

转载请注明出处http://blog.csdn.net/harryweasley/article/details/41977633,谢谢 本篇文章主要介绍Date,DateFormat,SimpleDateFormat,Calendar这四个类 Date类: 在java.util包下 类 Date 表示特定的瞬间,精确到毫秒. 从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串.Date 中的相应方法已废弃.

Java中常用日期操作及方法

前言 涉及到日期计算和字符串与日期转换,转来转去很是麻烦,于是归纳总结一下.以下都可以用. 一.Dateformat类的常用格式 y 年 Year 1996; 96 M 年中的月份 Month July; Jul; 07 w 年中的周数 Number 27 W 月份中的周数 Number 2 D 年中的天数 Number 189 d 月份中的天数 Number 10 F 月份中的星期 Number 2 E 星期中的天数 Text Tuesday; Tue a Am/pm 标记 Text PM H

java中的日期处理类总结

转自 http://blog.csdn.net/shibenjie/article/details/4263912 java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类 今天花了好大一点时间把java的日期类做了一下整理,哈 1.         Date类(该类现在很少用了) l         Date类对象的创建: n         创建一个当前时间 //默认是创建一个代表系统当前日期的Dat

填坑:Java 中的日期转换

我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方不再推荐使用,官方解释Date类不利于国际化,推荐使用Calendar类) Calendar类 DateFormat类 使用此类来时间初始化 我们发现,时间toLocalString 会有横线: vo.setSubmitDate(new Date().toLocaleString()); 可以改为:

Java中各种(类、方法、属性)访问修饰符与修饰符的说明

类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被本项目的所有类访问(使用),其他项目若想使用本项目中的类,必须将本项目打包为jar包,然后加入到classpath中 public类必须定义在和类名相同的同名文件中 (default) 只能被同一个包中的类访问(使用) 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 修饰符 名称

将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

方法一:使用Arrays.asList()方法 1 2 String[] asset = {"equity", "stocks", "gold", "foreign exchange","fixed income", "futures", "options"}; List<String> assetList = Arrays.asList(asset);

为什么Java中有些接口没有任何方法

由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的定义,没有方法的实现.接口中的所有方法都是抽象的.接口中成员的作用域修饰符都是public,接口中的常量值默认使用public static final修饰.由于一个类可以实现多个接口,因此通常可以采用实现多个接口的方式来间接的达到多重继承的目的. 在Java语言中,有些接口内部没有声明任何方法,也

Java中的equals和hashCode方法

本文转载自:Java中的equals和hashCode方法详解 Java中的equals方法和hashCode方法是Object中的,所以每个对象都是有这两个方法的,有时候我们需要实现特定需求,可能要重写这两个方法. equals()和hashCode()方法是用来在同一类中做比较用的,尤其是在容器里如set存放同一类对象时用来判断放入的对象是否重复.这里我们首先要明白一个问题: equals()相等的两个对象,hashcode()一定相等,equals()不相等的两个对象,却并不能证明他们的h

Delphi与Java中的日期互换

在最近做的一个项目中用到了Java和Delphi,发现它们不能正确读取对方的日期类型,如在Java中写入一个值为“2007-12-1”的日期值,通过Delphi读取却不是这个值了.通过查阅资料,发现两者对日期类型的定义略有不同.Java中日期使用的是长整型进行存储的,它表示距“1970-1-1”的毫秒数.如“1970-1-2”是在“1970-1-1”后的86400000毫秒,所以Java中就使用86400000表示“1970-1-2”这个日期.由于长整型是带符号的,所以我们可以使用负的毫秒数来表