美文网首页android基本功
Android 时间获取及格式化

Android 时间获取及格式化

作者: Lost_Robot | 来源:发表于2017-06-14 13:00 被阅读628次

    Android中获取系统时间有多种方法,可分为Java中Calendar类获取,java.util.date类实现,还有android中Time实现
    现总结如下:

    //一
       long time=System.currentTimeMillis();//long now = android.os.SystemClock.uptimeMillis();  
       SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
       Date d1=new Date(time);  
       String t1=format.format(d1);  
       Log.e("msg", t1);
    
    //二
       SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");  
       String t=format.format(new Date());  
       Log.e("msg", t); 
    
    //三
       Calendar calendar = Calendar.getInstance();  
       String created = calendar.get(Calendar.YEAR) + "年"  
                + (calendar.get(Calendar.MONTH)+1) + "月"//从0计算  
                + calendar.get(Calendar.DAY_OF_MONTH) + "日"  
                + calendar.get(Calendar.HOUR_OF_DAY) + "时"  
                + calendar.get(Calendar.MINUTE) + "分"+calendar.get(Calendar.SECOND)+"s";  
      Log.e("msg", created); 
    
    //四
       Time t=new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。  
       t.setToNow(); // 取得系统时间。  
       String time=t.year+"年 "+(t.month+1)+"月 "+t.monthDay+"日 "+t.hour+"h "+t.minute+"m "+t.second;  
       Log.e("msg", time);
    
    

    最后说一下日期格式化,日期格式化通常使用SimpleDateFormat类实现,其中的日期格式不能够自己随意定义,主要有以下几种形式:

    SimpleDateFormat f1= new SimpleDateFormat(); //其中没有些格式化参数,我们使用默认的日期格式。
    System.out.println(f.formate(new Date()));
    

    代码输出的日期格式为:12-3-22 下午4:36

    
    SimpleDateFormat f4= new SimpleDateFormat("今天是"+"yyyy年MM月dd日 E kk点mm分");//可根据不同样式请求显示不同日期格式,要显示星期可以添加E参数
    System.out.println(f4.format(new Date()));
    

    代码输出的日期格式为:今天是2012年03月22日 星期四 16点46分

    SimpleDateFormat formater = new SimpleDateFormat("yyyyMMdd hh:mm:ss");
     System.out.println("Date to String "+formater.format(new Date()));
    

    相近的常用形式还有 yyMMdd hh:mm:ss yyyy-MM-dd hh:mm:ss dd-MM-yyyy hh:mm:ss

    有的时候通常还会需要把具体日期转换为毫秒或者Timestamp形式,如下:
    文本 - > Timestamp,日期 -> Timestamp

      Timestamp t ;
      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
      try ...{
       t = new Timestamp(format.parse("2007-07-19 00:00:00").getTime());
      } catch (ParseException e) ...{
       e.printStackTrace();
      }
     Timestamp t ;
      SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
      t = new Timestamp(new Date().getTime());
    

    日期比较,转换处理

    public void compareToNowDate(Date date){  
            Date nowdate=new Date();  
            //format date pattern  
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            //convert to millions seconds  
            long time=DateToLong(StringToDate(formatter.format(nowdate)));  
            long serverTime=DateToLong(date);  
            //convert to seconds  
            long minTime=Math.abs(time-serverTime)/1000;    Log.d(getLocalClassName(), "minTime= "+minTime);  
        }  
          
        private long DateToLong(Date time){  
            SimpleDateFormat st=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//yyyyMMddHHmmss  
            return Long.parseLong(st.format(time));  
        }  
      
        private Date StringToDate(String s){  
            Date time=null;  
            SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            try {  
                time=sd.parse(s);  
            } catch (java.text.ParseException e) {  
                System.out.println("输入的日期格式有误!");   
                e.printStackTrace();  
            }  
            return time;  
        }  
    
    //计算日期之间相隔几天:  
        public long compareDataToNow(String date){  
               
              SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    
              Date passDate,nowDate;  
              long diff=-100l,days=-100l;  
                
             try {  
                 passDate = sdf.parse(date);  
                 String nowStr=sdf.format(new Date());  
                 nowDate=sdf.parse(nowStr);    
                   
                  diff = passDate.getTime() - nowDate.getTime();     
                    days = diff / (1000 * 60 * 60 * 24);   
                    System.out.println( "相隔:"+days+"天");  
            } catch (ParseException e) {  
                e.printStackTrace();  
            }  
             return diff;  
        } 
    

    相关文章

      网友评论

        本文标题:Android 时间获取及格式化

        本文链接:https://www.haomeiwen.com/subject/cymsqxtx.html