Java日期时间使用详解(5)

-------将日期按照不同格式进行输出------
按照Java默认的日期格式,默认的区域                      : 07-11-30 下午5:04
按照指定格式 yyyy-MM-dd hh:mm:ss EE ,系统默认区域      :2007-11-30 05:04:10 星期五
按照日期的FULL模式,区域设置为中文                      : 2007年11月30日 星期五
按照指定格式 yyyy年MM月dd日 hh时mm分ss秒 EE ,区域为中文 : 2007年11月30日 05时04分10秒 星期五
按照指定格式 yyyy-MM-dd hh:mm:ss EE ,区域为美国        : 2007-11-30 05:04:10 Friday
按照指定格式 yyyy-MM-dd ,系统默认区域                  : 2007-11-30
-------输出将字符串转换为日期的结果------
Fri Nov 30 14:32:00 CST 2007
Fri Nov 30 02:51:07 CST 2007
Fri Nov 30 00:00:00 CST 2007
Fri Nov 30 02:51:18 CST 2007
Fri Nov 30 02:51:18 CST 2007
Fri Nov 30 00:00:00 CST 2007

Process finished with exit code 0

 

4、java.util.Calendar(抽象类)

 

java.util.Calendar是个抽象类,是系统时间的抽象表示,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

 

与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。

 

一个Calendar的实例是系统时间的抽象表示,从Calendar的实例可以知道年月日星期月份时区等信息。Calendar类中有一个静态方法get(int x),通过这个方法可以获取到相关实例的一些值(年月日星期月份等)信息。参数x是一个产量值,在Calendar中有定义。

 

Calendar中些陷阱,很容易掉下去:

1、Calendar的星期是从周日开始的,常量值为0。

2、Calendar的月份是从一月开始的,常量值为0。

3、Calendar的每个月的第一天值为1。

 

5、java.util.GregorianCalendar(Calendar的直接子类)

 

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。结合Calendar抽象类使用。

 

下面给出一个综合实例看看Calendar类的用法:

 

import java.util.*;
import java.text.SimpleDateFormat;

/**
* Created by IntelliJ IDEA.
* User: leizhimin
* Date: 2007-11-30
* Time: 15:06:57
* Calendar的使用测试
*/

public class TestCalendar {
    public static void main(String args[]) {
        TestCalendar testCalendar = new TestCalendar();
        testCalendar.testCalendar();

    }

    public void testCalendar() {
        //创建Calendar的方式
        Calendar now1 = Calendar.getInstance();
        Calendar now2 = new GregorianCalendar();
        Calendar now3 = new GregorianCalendar(2007, 10, 30);
        Calendar now4 = new GregorianCalendar(2007, 10, 30, 15, 55);      //陷阱:Calendar的月份是0~11
        Calendar now5 = new GregorianCalendar(2007, 10, 30, 15, 55, 44);
        Calendar now6 = new GregorianCalendar(Locale.US);
        Calendar now7 = new GregorianCalendar(TimeZone.getTimeZone("GMT-8:00"));

        //通过日期和毫秒数设置Calendar
        now2.setTime(new Date());
        System.out.println(now2);

        now2.setTimeInMillis(new Date().getTime());
        System.out.println(now2);


        //定义日期的中文输出格式,并输出日期
        SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 E", Locale.CHINA);
        System.out.println("获取日期中文格式化化输出:" + df.format(now5.getTime()));
        System.out.println();

        System.out.println("--------通过Calendar获取日期中年月日等相关信息--------");
        System.out.println("获取年:" + now5.get(Calendar.YEAR));
        System.out.println("获取月(月份是从0开始的):" + now5.get(Calendar.MONTH));
        System.out.println("获取日:" + now5.get(Calendar.DAY_OF_MONTH));
        System.out.println("获取时:" + now5.get(Calendar.HOUR));
        System.out.println("获取分:" + now5.get(Calendar.MINUTE));
        System.out.println("获取秒:" + now5.get(Calendar.SECOND));
        System.out.println("获取上午、下午:" + now5.get(Calendar.AM_PM));
        System.out.println("获取星期数值(星期是从周日开始的):" + now5.get(Calendar.DAY_OF_WEEK));
        System.out.println();

        System.out.println("---------通用星期中文化转换---------");
        String dayOfWeek[] = {"", "", "", "", "", "", "", "六"};
        System.out.println("now5对象的星期是:" + dayOfWeek[now5.get(Calendar.DAY_OF_WEEK)]);
        System.out.println();

        System.out.println("---------通用月份中文化转换---------");
        String months[] = {"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"};
        System.out.println("now5对象的月份是: " + months[now5.get(Calendar.MONTH)]);
    }
}

 

运行结果:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/dc87e9d1b8ee8b5ec72321771c5b611e.html