我是靠谱客的博主 默默大门,最近开发中收集的这篇文章主要介绍java 日期时间总结 public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个特别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。 SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的getTimeInstance、getD,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个特别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。
SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的getTimeInstancegetDateInstancegetDateTimeInstance 创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。 可以根据需要用applyPattern 方法修改格式化方式。

SimpleDateFormat函数的继承关系:
Java.lang.Object
   |
   +----java.text.Format
           |
           +----java.text.DateFormat
                   |
                   +----java.text.SimpleDateFormat
下面是个小例子:
import java.text.*;
import java.util.Date;
/**
  SimpleDateFormat函数语法:
  
  G 年代标志符
  y 年
  M 月
  d 日
  h 时 在上午或下午 (1~12)
  H 时 在一天中 (0~23)
  m 分
  s 秒
  S 毫秒
  E 星期
  D 一年中的第几天
  F 一月中第几个星期几
  w 一年中第几个星期
  W 一月中第几个星期
  a 上午 / 下午 标记符 
  k 时 在一天中 (1~24)
  K 时 在上午或下午 (0~11)
  z 时区
 */
public class FormatDateTime {
    public static void main(String[] args) {
        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); 
        SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
        SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
        SimpleDateFormat myFmt4=new SimpleDateFormat(
                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
        Date now=new Date();
        System.out.println(myFmt.format(now));
        System.out.println(myFmt1.format(now));
        System.out.println(myFmt2.format(now));
        System.out.println(myFmt3.format(now));
        System.out.println(myFmt4.format(now));
        System.out.println(now.toGMTString());
        System.out.println(now.toLocaleString());
        System.out.println(now.toString());
    }    
}
效果:
2004年12月16日 17时24分27秒
04/12/16 17:24
2004-12-16 17:24:27
2004年12月16日 17时24分27秒 星期四 
一年中的第 351 天 一年中第51个星期 一月中第3个星期 在一天中17时 CST时区
16 Dec 2004 09:24:27 GMT
2004-12-16 17:24:27
Thu Dec 16 17:24:27 CST 2004
下面是个JavaBean:
public class FormatDateTime {  
    public static String toLongDateString(Date dt){
        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");       
        return myFmt.format(dt);
    }
    public static String toShortDateString(Date dt){
        SimpleDateFormat myFmt=new SimpleDateFormat("yy年MM月dd日 HH时mm分");        
        return myFmt.format(dt);
    }    
    
    public static String toLongTimeString(Date dt){
        SimpleDateFormat myFmt=new SimpleDateFormat("HH mm ss SSSS");        
        return myFmt.format(dt);
    }
    public static String toShortTimeString(Date dt){
        SimpleDateFormat myFmt=new SimpleDateFormat("yy/MM/dd HH:mm");        
        return myFmt.format(dt);
    }
    public static void main(String[] args) {
        Date now=new Date();
        System.out.println(FormatDateTime.toLongDateString(now));
        System.out.println(FormatDateTime.toShortDateString(now));
        System.out.println(FormatDateTime.toLongTimeString(now));
        System.out.println(FormatDateTime.toShortTimeString(now));
    }    
}
调用的main 测试结果:
2004年12月16日 17时38分26秒 星期四 
04年12月16日 17时38分
17 38 26 0965
04/12/16 17:38
--------------------------------------------------------------------------------------------
1)  Java 中的时间类有:Date 和 Calendar

2)  Java 中时间类的本质
      Date = long + 操作
      Calendar = long + 操作

3)  时间的标准有两种
    (1970)GMT long
    (0)UTC long

4)  java 中基本的时间表示 GMT long

5)  Java 提供了 Date 类型表示时间和日期 ,   Date 是 long 类型的包装 

6)  Calendar 是历法的的抽象
       历法:公历、农历、太阳历 ...

7)  GregorianCalendar 是历法的实现,采用公历(太阳历)算法实现的
      Calender cal = Calender.getInstance();

8)  Date 和 Calendar 的默认值就是系统当前时间


-----> 操作日期主要涉及到一下几个类:
 
1、java.util.Date
        类 Date 表示特定的瞬间,精确到毫秒。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的把日期解释为年、月、日、小时、分钟和秒值的方法已废弃。
 
2、java.text.DateFormat(抽象类)
        DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、分析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年,1 月 1 日 00:00:00 这一刻开始的毫秒数。
 
3、java.text.SimpleDateFormat(DateFormat的直接子类)
        SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。
        SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来新的创建日期-时间格式化程序。
 
4、java.util.Calendar(抽象类)
        Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
        与其他语言环境敏感类一样,Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。
 
5、java.util.GregorianCalendar(Calendar的直接子类)
        GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
        GregorianCalendar 是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家是在 1582 年 10 月 15 日创立,在其他国家要晚一些)。可由调用方通过调用 setGregorianChange() 来更改起始日期。


----->

Java中日期的经常有一下五个方面:
1、创建日期
2、日期格式化显示
3、日期的转换(主要是和字符串之间的相互转换)
4、日期中年、月、日、时、分、秒、星期、月份等获取。
5、日期的大小比较、日期的加减。


Date用法:
import java.util.Date; 
import java.util.Locale; 
import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 

/** 
* Created by IntelliJ IDEA. 
* User: leizhimin 
* Date: 2007-11-30 
* Time: 11:20:58 
* To change this template use File | Settings | File Templates. 
*/
 
public  class TestSimpleDateFormat { 
     public  static  void main(String args[])  throws ParseException { 
        TestSimpleDateFormat test =  new TestSimpleDateFormat(); 
        test.testDateFormat(); 

    } 

     public  void testDateFormat()  throws ParseException { 
         //创建日期 
        Date date =  new Date(); 

         //创建不同的日期格式 
        DateFormat df1 = DateFormat.getInstance(); 
        DateFormat df2 =  new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss EE"); 
        DateFormat df3 = DateFormat.getDateInstance(DateFormat.FULL, Locale.CHINA);      //产生一个指定国家指定长度的日期格式,长度不同,显示的日期完整性也不同 
        DateFormat df4 =  new SimpleDateFormat( "yyyy年MM月dd日 hh时mm分ss秒 EE", Locale.CHINA); 
        DateFormat df5 =  new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss EEEEEE", Locale.US); 
        DateFormat df6 =  new SimpleDateFormat( "yyyy-MM-dd"); 
        DateFormat df7 =  new SimpleDateFormat( "yyyy年MM月dd日"); 

         //将日期按照不同格式进行输出 
        System.out.println( "-------将日期按照不同格式进行输出------"); 
        System.out.println( "按照Java默认的日期格式,默认的区域                      : " + df1.format(date)); 
        System.out.println( "按照指定格式 yyyy-MM-dd hh:mm:ss EE ,系统默认区域      :" + df2.format(date)); 
        System.out.println( "按照日期的FULL模式,区域设置为中文                      : " + df3.format(date)); 
        System.out.println( "按照指定格式 yyyy年MM月dd日 hh时mm分ss秒 EE ,区域为中文 : " + df4.format(date)); 
        System.out.println( "按照指定格式 yyyy-MM-dd hh:mm:ss EE ,区域为美国        : " + df5.format(date)); 
        System.out.println( "按照指定格式 yyyy-MM-dd ,系统默认区域                  : " + df6.format(date)); 

         //将符合该格式的字符串转换为日期,若格式不相配,则会出错 
        Date date1 = df1.parse( "07-11-30 下午2:32"); 
        Date date2 = df2.parse( "2007-11-30 02:51:07 星期五"); 
        Date date3 = df3.parse( "2007年11月30日 星期五"); 
        Date date4 = df4.parse( "2007年11月30日 02时51分18秒 星期五"); 
        Date date5 = df5.parse( "2007-11-30 02:51:18 Friday"); 
        Date date6 = df6.parse( "2007-11-30"); 

        System.out.println( "-------输出将字符串转换为日期的结果------"); 
        System.out.println(date1); 
        System.out.println(date2); 
        System.out.println(date3); 
        System.out.println(date4); 
        System.out.println(date5); 
        System.out.println(date6); 
    } 
运行结果:
-------将日期按照不同格式进行输出------ 
按照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


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)]); 
    } 
}
 
运行结果:
java.util.GregorianCalendar[time=1196414388324,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET=28800000,DST_OFFSET=0] 
java.util.GregorianCalendar[time=1196414388324,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR=334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOUR_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET=28800000,DST_OFFSET=0] 
获取日期中文格式化化输出:2007年11月30日 03时55分44秒 星期五 

--------通过Calendar获取日期中年月日等相关信息-------- 
获取年:2007 
获取月(月份是从0开始的):10 
获取日:30 
获取时:3 
获取分:55 
获取秒:44 
获取上午、下午:1 
获取星期数值(星期是从周日开始的):6 

---------通用星期中文化转换--------- 
now5对象的星期是:五 

---------通用月份中文化转换--------- 
now5对象的月份是: 十一月 

Process finished with exit code 0 

最后

以上就是默默大门为你收集整理的java 日期时间总结 public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个特别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。 SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的getTimeInstance、getD的全部内容,希望文章能够帮你解决java 日期时间总结 public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个特别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。 SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的getTimeInstance、getD所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部