博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android获取系统时间方法的总结
阅读量:5098 次
发布时间:2019-06-13

本文共 3242 字,大约阅读时间需要 10 分钟。

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

(1)Calendar

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

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;	}}

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

(2)Date

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

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;	}}

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

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

(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。

转载于:https://www.cnblogs.com/mstk/p/3535659.html

你可能感兴趣的文章
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
python第九天课程:遇到了金角大王
查看>>
字符串处理
查看>>
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>
hdu 5402 Travelling Salesman Problem (技巧,未写完)
查看>>
[AIR] 获取U盘,打开U盘
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
asp.net 获取IP地理位置的几个主要接口
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>