android 系统日期时间的获取

[java]  view plain copy print ?
  1. import    java.text.SimpleDateFormat;       
  2.        
  3. SimpleDateFormat    formatter    =   new    SimpleDateFormat    ("yyyy年MM月dd日    HH:mm:ss     ");       
  4. Date    curDate    =   new    Date(System.currentTimeMillis());//获取当前时间       
  5. String    str    =    formatter.format(curDate);       
 

可以获取当前的年月时分,也可以分开写:

[java]  view plain copy print ?
  1. SimpleDateFormat    sDateFormat    =   new    SimpleDateFormat("yyyy-MM-dd    hh:mm:ss");       
  2. String    date    =    sDateFormat.format(new    java.util.Date());    
 

    如果想获取当前的年月,则可以这样写(只获取时间或秒种一样):

    Java代码

    [java]  view plain copy print ?
    1. SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM");    
    2. String date=sdf.format(new java.util.Date());    

    当然还有就是可以指定时区的时间(待):

    [java]  view plain copy print ?
    1. df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,Locale.CHINA);  
    2. System.out.println(df.format(new Date()));  
     

     

    [java]  view plain copy print ?
    1. ContentResolver cv = this.getContentResolver();  
    2.        String strTimeFormat = android.provider.Settings.System.getString(cv,  
    3.                                           android.provider.Settings.System.TIME_12_24);  
    4.         
    5.        if(strTimeFormat.equals("24"))  
    6.       {  
    7.               Log.i("activity","24");  
    8.        }   

    [java]  view plain copy print ?
    1. Calendar c = Calendar.getInstance();  
    2. 取得系统日期:year = c.get(Calendar.YEAR)  
    3.                month = c.grt(Calendar.MONTH)  
    4.                day = c.get(Calendar.DAY_OF_MONTH)  
    5. 取得系统时间:hour = c.get(Calendar.HOUR_OF_DAY);  
    6.                   minute = c.get(Calendar.MINUTE)  

     

     

    利用Calendar获取


    [java]  view plain copy print ?
    1. Calendar c = Calendar.getInstance();  
    2. 取得系统日期:year = c.get(Calendar.YEAR)  
    3.                month = c.grt(Calendar.MONTH)  
    4.                day = c.get(Calendar.DAY_OF_MONTH)  
    5. 取得系统时间:hour = c.get(Calendar.HOUR_OF_DAY);  
    6.                   minute = c.get(Calendar.MINUTE)  
    7.                     Calendar c = Calendar.getInstance();  
    8. 取得系统日期:year = c.get(Calendar.YEAR)  
    9.                    month = c.grt(Calendar.MONTH)  
    10.                    day = c.get(Calendar.DAY_OF_MONTH)  
    11. 取得系统时间:hour = c.get(Calendar.HOUR_OF_DAY);  
    12.                      minute = c.get(Calendar.MINUTE)  

     

     

    利用Time获取

    [java]  view plain copy print ?
    1. Time t=new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。  
    2. t.setToNow(); // 取得系统时间。  
    3. int year = t.year;  
    4. int month = t.month;  
    5. int date = t.monthDay;  
    6. int hour = t.hour; // 0-23  
    7. int minute = t.minute;  
    8. int second = t.second;  

    唯一不足是取出时间只有24小时模式.


    //将系统设置为北京时区(这样修改时区后都是以北京东八区为主) 

    [java]  view plain copy print ?
    1. //将系统设置为北京时区 
    2. TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));  
    3. Date date = new Date(currentTimeMillis); 
    4. int currentHour = date.getHours(); 

    举例:代码放GAE上,默认时间为美国时区,google到蛮多说下面方法可以解决

    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
    Date date = cal.getTime();

    date还是为美国时间,不起作用?

    后来

    TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
    Calendar cal = Calendar.getInstance();
    Date date = cal.getTime();

    这样就OK了。。。

    时间和日历是两个不同的概念。

    Date代表的是一个绝对时间,也就是说,不管你在哪个时区,Date都是一样的,都是从1970年1月1日0点0分GMT时间起,到目前这一刻的毫秒数。所以,你第一段代码和第二段代码里面,得到的date对象所代表的时间其实是一样的。

    而日历是人们对绝对时间的一种描述方法,例如某年某月某日几时几分几秒,这,随着你当前所处的时区和地区而不同。

    你在观察date对象的时候,你肯定没有去看它的毫秒数,而是先把毫秒数转换成一个日历。你没有写出你是怎么把date转换成日历的,但假如你是用默认的Date.toString()的话,那么,这是根据当前的默认时区来把毫秒数转换成日历的。因此,你在第一段代码里没有修改默认时区,得到的还是美国时间。而在第二段代码里,因为修改了默认时区,所以虽然绝对时间没有变化,但是你转换得到的日历不一样了。

    其实,如果你是要获取当前时间,那么直接用new Date()就可以了,跟你先创建一个Calendar对象,再指定一个时区后获取的date是完全一样的。只有在你需要把一个date用日历来表示的时候,才需要用到Calendar和TimeZone。


    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值