android 系统日期时间的获取

  • Post author:
  • Post category:其他





  1. import


    java.text.SimpleDateFormat;



  2. SimpleDateFormat    formatter    =

    new


    SimpleDateFormat    (


    “yyyy年MM月dd日    HH:mm:ss     ”


    );


  3. Date    curDate    =

    new


    Date(System.currentTimeMillis());


    //获取当前时间




  4. String    str    =    formatter.format(curDate);


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




  1. SimpleDateFormat    sDateFormat    =


    new


    SimpleDateFormat(


    “yyyy-MM-dd    hh:mm:ss”


    );


  2. String    date    =    sDateFormat.format(

    new


    java.util.Date());


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



Java代码




  1. SimpleDateFormat sdf=


    new


    SimpleDateFormat(


    “yyyy-MM”


    );


  2. String date=sdf.format(

    new


    java.util.Date());


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




  1. df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,Locale.CHINA);


  2. System.out.println(df.format(

    new


    Date()));



  1. ContentResolver cv =


    this


    .getContentResolver();


  2. String strTimeFormat = android.provider.Settings.System.getString(cv,

  3. android.provider.Settings.System.TIME_12_24);



  4. if


    (strTimeFormat.equals(


    “24”


    ))


  5. {

  6. Log.i(

    “activity”


    ,


    “24”


    );


  7. }




  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获取






  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获取






  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小时模式.




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







  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。



版权声明:本文为Jason_996原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。