Android获取系统时间方法的总结

Android获取系统时间方法的方法有很多种,常用的有Calendar、Date、currentTimeMills等方法。

(1)Calendar

Calendar获取系统时间首先要用Calendar.getInstance()函数获取一个实例,再为该实例设定时区(中国的时区为GMT+8:00),最后使用Calendar.get()函数获取时间的具体信息,如年,月,日,小时,分,秒,星期几。

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
55
56
57
58
59
60
package com.hzhi.time_example;
 
import java.util.Calendar;
import java.util.TimeZone;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
 
public class MainActivity extends Activity {
     
    TextView txtTime1;
    TextView txtTime2;
    Calendar cal;
    String year;
    String month;
    String day;
    String hour;
    String minute;
    String second;
    String my_time_1;
    String my_time_2;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txtTime1 = (TextView) findViewById(R.id.textView1);
        txtTime2 = (TextView) findViewById(R.id.textView2);
         
        cal = Calendar.getInstance();
        cal.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
         
        year = String.valueOf(cal.get(Calendar.YEAR));
        month = String.valueOf(cal.get(Calendar.MONTH))+1;
        day = String.valueOf(cal.get(Calendar.DATE));
        if (cal.get(Calendar.AM_PM) == 0)
            hour = String.valueOf(cal.get(Calendar.HOUR));
        else
            hour = String.valueOf(cal.get(Calendar.HOUR)+12);
        minute = String.valueOf(cal.get(Calendar.MINUTE));
        second = String.valueOf(cal.get(Calendar.SECOND));
         
        my_time_1 = year + "-" + month + "-" + day;
        my_time_2 = hour + "-" + minute + "-" + second;
         
        txtTime1.setText(my_time_1);
        txtTime2.setText(my_time_2);
         
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}

Android获取系统时间方法的总结

缺点是获得的这些时间信息都是独立的,如果要一起显示的话,还要组装起来凑成一个字符串,稍显麻烦。不过如果只需要单个时间信息,如星期几,这种方法是比较方便的。并且可以根据Calendar.AM_PM属性判断当前是AM还是PM(0为AM,1为PM),然后根据需要显示12小时或24小时的时间。或者直接获得Calendar.HOUR_OF_DAY显示24小时的时间。

(2)Date

Date方法比较简单,只需要一条语句:Date().toLocaleString(),就可以获得整个的时间信息,并且格式规范,不用再组装,可以直接显示。缺点是如果想用另外一种格式显示,或者只需要单个的时间信息,就比较麻烦。

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
package com.hzhi.time_example_02;
 
import java.util.Date;
 
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
 
public class MainActivity extends Activity {
     
    TextView txt_time;
    Date dt;
    String str_time;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt_time = (TextView) findViewById(R.id.textView1);
        dt = new Date();
        str_time = dt.toLocaleString();
        txt_time.setText(str_time);
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
}

Android获取系统时间方法的总结

可以定义SimpleDateFormat,规定哪些信息显示,哪些信息不显示,如显示年、月、日、小时、分钟、星期几,可以定义下面的SimpleDateFormat:

1
2
3
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm E");
str_time = sdf.format(dt);
txt_time.setText(str_time);

Android获取系统时间方法的总结

(3)currentTimeMills

System.currentTimeMillis()产生一个毫秒数,即当前距离1970-01-01 00:00:00的毫秒数。如果只是得到这个毫秒数是毫无意义的,但是Date(System.currentTimeMillis())之后就可以把这个毫秒数转换为一个日期变量。实际上,Date()就相当于Date(System.currentTimeMillis())。也可以在Date后面跟任意一个long型变量,如Date(1000000000),就得到一个日期:1970-01-12 21:46:40。