zoukankan      html  css  js  c++  java
  • Java中时间日期格式化

    1、与日期时间相关的类:
          第一:java.util.Date;                           将时间作为一个整体使用、处理时,使用Date类较为简便
          第二:java.util.Calender;                     要处理时间的一部分,如月、分时,使用Calendar类较为简便
          第三:java.text.DateFormat                抽象类,是SimpleDateFormate的父类
          第四:java.text.SimpleDateFormate    时间日期转换时,用的最多的类

    2、日期和时间模式

           日期和时间格式由日期和时间模式 字符串指定。

    在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。

    所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

    定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

    字母日期或时间元素表示示例
    G Era 标志符 Text AD
    y Year 199696
    M 年中的月份 Month JulyJul07
    w 年中的周数 Number 27
    W 月份中的周数 Number 2
    D 年中的天数 Number 189
    d 月份中的天数 Number 10
    F 月份中的星期 Number 2
    E 星期中的天数 Text TuesdayTue
    a Am/pm 标记 Text PM
    H 一天中的小时数(0-23) Number 0
    k 一天中的小时数(1-24) Number 24
    K am/pm 中的小时数(0-11) Number 0
    h am/pm 中的小时数(1-12) Number 12
    m 小时中的分钟数 Number 30
    s 分钟中的秒数 Number 55
    S 毫秒数 Number 978
    z 时区 General time zone Pacific Standard TimePSTGMT-08:00
    Z 时区 RFC 822 time zone -0800

    为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小时制,而hh是12小时制 

    3、格式转换

    DateFormat类中的两个方法:

    public Date parse(String source) throws ParseException  

    A.parse(B)  :将字符串B按照A的形式解析成Date              A是DateFormat或者其子类的实例

    public final String format(Date date)                            

     A.format(B):将一个 Date类型的B格式化为A格式的字符串      A是DateFormat或者其子类的实例

     

    实例:         将  2008-10-19 10:11:30.345   转化为   2008年10月19日 10时11分30秒345毫秒

                      步骤:2008-10-19 10:11:30.345  -- parse --> date --format--> 2008年10月19日 10时11分30秒345毫秒

             public static void main(String args[]){
                   String strDate = "2008-10-19 10:11:30.345" ;
                   SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;  // 实例化模板对象
                   SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒") ;    
                   Date d = null ;
                   try{
                         d = sdf1.parse(strDate) ;                                                                                 // 将给定的字符串中解析成日期
                         System.out.println(d);                                                                                    //Sun Oct 19 10:11:30 CST 2008
                   }catch(Exception e){
                         e.printStackTrace() ; 
                   }
                   System.out.println(sdf2.format(d)) ;                        // 将日期格式化为字符串   2008年10月19日 10时11分30秒345毫秒

             }

     

    4、日期比较、加减

    Date类中的两个方法:

    public long getTime()            返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
    public void setTime(long time)   设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

    实例: 求出sourceTime,过minuteNumber分钟后的时间
     public static String getPreTime(String sourceTime, String minuteNumber) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String mydate1 = "";
        try {
             Date date1 = format.parse(sourceTime);
             long Time = (date1.getTime() / 1000) + Integer.parseInt(minuteNumber) * 60;
             date1.setTime(Time * 1000);
             mydate1 = format.format(date1);
        } catch (Exception e) { }
        return mydate1;
     }

    5、时间戳:某个时间点的时间戳就是:该时间点距1970 年 1 月 1 日 00:00:00相差的毫秒数 

    获得当前时间的时间戳:new Date().getTime();  System.currentTimeMillis();

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    package com.playtogether.utils;
     
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
     
    public class DateUtils {
     
        /**
         * unix时间戳转换为dateFormat
         
         * @param beginDate
         * @return
         */
        public static String timestampToDate(String beginDate) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String sd = sdf.format(new Date(Long.parseLong(beginDate)));
            return sd;
        }
     
        /**
         * 自定义格式时间戳转换
         
         * @param beginDate
         * @return
         */
        public static String timestampToDate(String beginDate,String format) {
            SimpleDateFormat sdf = new SimpleDateFormat(format);
            String sd = sdf.format(new Date(Long.parseLong(beginDate)));
            return sd;
        }
     
        /**
         * 将字符串转为时间戳
         
         * @param user_time
         * @return
         */
        public static String dateToTimestamp(String user_time) {
            String re_time = null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            Date d;
            try {
                d = sdf.parse(user_time);
                long l = d.getTime();
                String str = String.valueOf(l);
                re_time = str.substring(010);
            catch (ParseException e) {
                e.printStackTrace();
            }
            return re_time;
        }
     
    }

     

     

     

    package com.my.base.study;

    import java.text.DateFormat;
    import java.util.Calendar;
    import java.util.Date;

    /**
    * Created by chengtao on 17/12/16.
    */
    public class TimeStudy {
    public static void main(String[] args) {
    getTimeByDate();
    System.out.println("****************************");
    getTimeByCalendar();
    System.out.println("****************************");
    addSub();
    System.out.println("****************************");
    change();
    }

    public static void getTimeByDate(){
    Date date = new Date();
    DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日
    System.out.println(df1.format(date));
    DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒
    System.out.println(df2.format(date));
    DateFormat df3 = DateFormat.getTimeInstance();//只显示出时分秒
    System.out.println(df3.format(date));
    DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //显示日期,周,上下午,时间(精确到秒)
    System.out.println(df4.format(date));
    DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //显示日期,上下午,时间(精确到秒)
    System.out.println(df5.format(date));
    DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //显示日期,上下午,时间(精确到分)
    System.out.println(df6.format(date));
    DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //显示日期,时间(精确到分)
    System.out.println(df7.format(date));
    }
    public static void getTimeByCalendar(){
    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);//获取年份
    int month=cal.get(Calendar.MONTH) +1;//获取月份
    int day=cal.get(Calendar.DATE);//获取日
    int hour=cal.get(Calendar.HOUR);//小时
    int minute=cal.get(Calendar.MINUTE);//分
    int second=cal.get(Calendar.SECOND);//秒
    int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天
    System.out.println("现在的时间是:公元"+year+"年"+month+"月"+day+"日 "+hour+"时"+minute+"分"+second+"秒 星期"+WeekOfYear);

    Calendar cal1 = Calendar.getInstance();
    cal1.set(year,month,day,0,0,0);
    System.out.println("date = " + cal1.getTime());
    }

    public static void addSub (){
    Calendar c = Calendar.getInstance();
    int year=c.get(Calendar.YEAR);
    int month=c.get(Calendar.MONTH)+1;
    int date=c.get(Calendar.DATE);
    System.out.println("今天是"+year+"年"+month+"月"+date+"日");
    System.out.println("是今年的第"+c.get(Calendar.DAY_OF_YEAR)+"天");
    System.out.println("c.getTime()的結果: "+c.getTime());
    System.out.println("new Date()的結果: "+new Date());
    c.add(Calendar.DATE, 30);//增加一天
    System.out.println("30天后是"+c.getTime());

    c.add(Calendar.DATE, -30);//增加一天
    System.out.println("30天前是"+c.getTime());

    c.add(Calendar.MONTH, 1);//增加一月
    System.out.println("一个月后是"+c.getTime());
    }

    public static void change(){
    // (1) Calendar转化为Date()
    Calendar cal1=Calendar.getInstance();
    Date date1=cal1.getTime();
    System.out.println( "Calendar转化为Date -- " +date1);

    // (2) Date转化为Calendar
    Date date=new Date();
    Calendar cal=Calendar.getInstance();
    cal.setTime(date);
    System.out.println( "Date转化为Calendar -- " +cal);
    }

    }
  • 相关阅读:
    第三课 Spinner的使用
    Deployment failed due to an error in FastDev assembly synchronization.
    第二课 两个视图+数据传输
    第一课 Hello
    Tab的键的妙用
    RelativeLayout相对布局中拖放控件的办法
    更改layout的布局
    关于MultiDataTrigger和MultiTrigger的一些注意事项
    WPF中XAML的触发器的属性,事件 都有那些?以及如何寻找
    EventTrigger
  • 原文地址:https://www.cnblogs.com/ctaixw/p/5068717.html
Copyright © 2011-2022 走看看