zoukankan      html  css  js  c++  java
  • Android随笔之——Android时间、日期相关类和方法

      今天要讲的是Android里关于时间、日期相关类和方法。在Android中,跟时间、日期有关的类主要有Time、Calendar、Date三个类。而与日期格式化输出有关的DateFormat和SimpleDateFormat,今天会稍微提到关于这两个类的用法,下次会找个时间细讲。

      

    一、Time类

      在官方的API中,有建议说使用Time代替Calendar,原因不明,据说用Time对CPU的负荷比较小。

      在Time中,年月日时分秒的转义字符分别对应%Y%m%d%H%M%S,切记,大小写千万不能写错,不然输出完全不对了。

      好了,也不讲什么废话,这个还是看代码比我讲的来的实在

     1 package com.example.alarmmanager;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 import android.text.format.Time;
     6 
     7 public class MainActivity extends Activity {
     8 
     9     protected void onCreate(Bundle savedInstanceState) {
    10         super.onCreate(savedInstanceState);
    11 
    12         // 初始话一个Time对象,也可以写成:Time time = new Time("GTM+8"),即加上时区
    13         Time time = new Time();
    14         // 设置当前时间
    15         time.setToNow();
    16         // 获取当前时区
    17         System.out.println(Time.getCurrentTimezone());
    18         // 输出当前日期
    19         System.out.println(time.year + "年" + time.month + "月" + time.monthDay
    20                 + "日" + time.hour + "时" + time.minute + "分" + time.second + "秒"
    21                 + ":现在是一年中的第" + time.yearDay + "天");
    22         // 获取当前是一年中的第几周
    23         System.out.println("现在是一年中的第" + time.getWeekNumber() + "周");
    24         // 格式话输出当前日期、时间
    25         System.out.println(time.format("%Y-%m-%d %H:%M:%S"));
    26         System.out.println(time.format("%Y%m%dT%H%M%S"));// 与time.format2445相同
    27         
    28         System.out.println(time.format2445());// 形如20140829T143523
    29         
    30         // time.format3339(boolean allDay)。如果allDay为true,则输出Y-M-D格式
    31         // 如过allDay为false并且时区为UTC,则输出 Y-M-D-T-H-M-S UTC
    32         // 否则输出 Y-M-D-T-H-M-S +- GMT
    33         System.out.println(time.format3339(true));
    34         
    35         // 解析日期字符串,"20081013T160000Z"、"20081013"
    36         System.out.println(time.parse("20081013T160000"));
    37         
    38         // 将当前时间以YYYYMMDDTHHMMSS 输出
    39         // 输出结果与time.parse有关,不详细说了,Android的API里有详细的解释
    40         System.out.println(time.toString());
    41 
    42     }
    43 
    44 }

    输出结果如下:

    二、Calendar

      Calendar类是一个基础抽象类,用在Date对象和一些整数字段(如:年、月、日、时、分、秒)之间的转换。Date对象以毫秒为精度,用来表示特定时刻。

      在Android中,Calendar是能够自动根据手机所设置的时区来调整时间戳的,也就是该时区真实的时间戳。注意,这与Date和SimpleDateFormat不一样,Date和SimpleDateFormat获得的时间戳则不考虑时区,而是获取标准的GMT时间戳。但是这两者的时间戳差值可以通过使用TimeZone.getDefault().getRawOffset()方法来取得。

      一些Calendar常用的常量字段:

    Calendar.YEAR——年份
    
    Calendar.MONTH——月份
    
    Calendar.DATE——日期
    
    Calendar.DAY_OF_MONTH——日期,和上面的字段意义完全相同
    
    Calendar.HOUR——12小时制的小时
    
    Calendar.HOUR_OF_DAY——24小时制的小时
    
    Calendar.MINUTE——分钟
    
    Calendar.SECOND——秒
    
    Calendar.DAY_OF_WEEK——星期几

      下面,还是贴上代码,要讲的内容全部写在代码的注释中,边看边理解更容易

     1 package com.example.alarmmanager;
     2 
     3 import java.text.SimpleDateFormat;
     4 import java.util.Calendar;
     5 import java.util.Date;
     6 
     7 import android.annotation.SuppressLint;
     8 import android.app.Activity;
     9 import android.os.Bundle;
    10 import android.text.format.DateFormat;
    11 
    12 @SuppressLint("SimpleDateFormat")
    13 public class MainActivity extends Activity {
    14 
    15     protected void onCreate(Bundle savedInstanceState) {
    16         super.onCreate(savedInstanceState);
    17 
    18         // 获取Calendar实例
    19         Calendar calendar = Calendar.getInstance();
    20         // 输出日期信息,还有许多常量字段,我就不再写出来了
    21         System.out.println(calendar.get(Calendar.YEAR) + "年"
    22                 + calendar.get(Calendar.MONTH) + "月"
    23                 + calendar.get(Calendar.DAY_OF_MONTH) + "日"
    24                 + calendar.get(Calendar.HOUR_OF_DAY) + "时"
    25                 + calendar.get(Calendar.MINUTE) + "分"
    26                 + calendar.get(Calendar.SECOND) + "秒" + "
    今天是星期"
    27                 + calendar.get(Calendar.DAY_OF_WEEK) + "是今年的第"
    28                 + calendar.get(Calendar.WEEK_OF_YEAR) + "周");
    29         // 格式化输出日期,在这个方法中,时间显示是12小时制的,如果需要显示24小时制,只需将hh换成kk
    30         System.out.println(DateFormat.format("yyyy-MM-dd kk:mm:ss",
    31                 calendar.getTime()).toString());
    32         // 将日期转换成毫秒
    33         try {
    34             // 返回这个calendar的Date对象
    35             Date calendarDate = calendar.getTime();
    36             // 已yyyy-MM-dd kk:mm:ss格式化calendarDate对象,并转化成String对象
    37             String time = DateFormat
    38                     .format("yyyy-MM-dd kk:mm:ss", calendarDate).toString();
    39             System.out.println("DateFormat格式化之后String值:" + time);
    40             // 新建一个SimpleDateFormat对象,时间的格式
    41             SimpleDateFormat format = new SimpleDateFormat(
    42                     "yyyy-MM-dd kk:mm:ss");
    43             // format.parse()返回一个Date的数据类型
    44             Date date = format.parse(time);
    45             //返回从1970-01-01 00:00:00到date表示时间的毫秒数
    46             System.out.println("date.getTime:" + date.getTime());
    47             // format.parse()返回一个Date的数据类型
    48             System.out.println("format.parse():"
    49                     + format.parse("2014-08-29 15:56:00"));
    50         } catch (Exception e) {
    51             e.printStackTrace();
    52         }
    53 
    54     }
    55 
    56 }

      关于Android中时间、日期相关类和方法的内容就这么多,如果发现有遗漏的内容,希望大家提出来,我会在这篇博客中继续完善补充。接下来就要学习关于DateFormat和SimpleDateFormat的知识,晚上好好去补补!哦耶~

      

      作者:登天路

      转载请说明出处:http://www.cnblogs.com/travellife/

  • 相关阅读:
    IOS UIwebview 背景色调整
    文件的创建 判断是否存在文件 读取 写入
    IOS 关于ipad iphone5s崩溃 解决
    iOS tabbar 控制器基本使用
    iOS 关于流媒体 的初级认识与使用
    总结 IOS 7 内存管理
    iOS 应用首次开启 出现引导页面
    IOS UItableView 滚动到底 触发事件
    IOS 应用中从竖屏模式强制转换为横屏模式
    iOS 定位系统 知识
  • 原文地址:https://www.cnblogs.com/travellife/p/3945240.html
Copyright © 2011-2022 走看看