从基础做起——调用设备系统的时间日期

         实现一个很基础很必备的功能,获取系统时间日期。

         首先理清思路:用一个类TimeAndDate来调用系统的时间日期,为了让项目看起来简单明了用另一个类来初始化年月日等所需参数,最后需要在主函数中刷新显示,这里需要说明的是在主函数中需要生命周期中的onResume()来实现设备与程序的交互,不然并不会显示出当前的时间日期,这也是我在整个项目里面所犯的错误。

          布局文件中放了两个TextView,居中显示,然后在MainActivity中定义并初始化,接下来直接贴TimeAndDate和参数SystemTimeInfo的代码:

public class TimeAndDate {
	
	private static TimeAndDate timeAndDate=null;
	
	public static TimeAndDate getInfo(){
		if(timeAndDate==null){
			timeAndDate=new TimeAndDate();
		}
		return timeAndDate;
	}
	
	private SystemTimeInfo mTime=new SystemTimeInfo();
	public SystemTimeInfo getSystemTimeAndDate(){
		final Calendar calendar=Calendar.getInstance();
		calendar.setTimeZone(TimeZone.getTimeZone("GMT+08:00"));
		mTime.yearString=String.valueOf(calendar.get(Calendar.YEAR));//String类型转换成Integer
		mTime.monthString=String.valueOf(calendar.get(Calendar.MONTH));
		mTime.dayString=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
		
		String dayOfWeek=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK));
		if("1".equals(dayOfWeek)){
			dayOfWeek="天";
		}else if("2".equals(dayOfWeek)){
			dayOfWeek="一";
		}else if("3".equals(dayOfWeek)){
			dayOfWeek="二";
		}else if("4".equals(dayOfWeek)){
			dayOfWeek="三";
		}else if("5".equals(dayOfWeek)){
			dayOfWeek="四";
		}else if ("6".equals(dayOfWeek)) {
			dayOfWeek="五";
		}else if ("7".equals(dayOfWeek)) {
			dayOfWeek="六";
		}
		mTime.weekDayString="星期"+dayOfWeek;
//		24小时制
		SimpleDateFormat dateFormat24 = new SimpleDateFormat("HH:mm");
//		12小时制
		SimpleDateFormat dateFormat12 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		mTime.timeString=dateFormat24.format(Calendar.getInstance().getTime());
//		mTime.timeString=dateFormat12.format(Calendar.getInstance().getTime());
		
		return mTime;
		
	}

}public class SystemTimeInfo {

	public String yearString;
	public String monthString;
	public String dayString;
	public String weekDayString;
	public String timeString;
}

           注意,这里使用到时区,所以要在Mainifest中添加: <uses-permission android:name="android.permission.SET_TIME_ZONE"/>,而且使用ValueOf方法将String型变量转换为Integer类型。

           回到MainActivity中,首先更新TextView,如下:

 private void refreshDateAndTime(){
    	SystemTimeInfo time=TimeAndDate.getInfo().getSystemTimeAndDate();
    	timeTextView.setText(time.timeString);
    	dateTextView.setText(time.yearString+"年"+time.monthString+"月"+time.dayString+"日"+time.weekDayString);
    }
然后在onResume()中调用refreshDateAndTime(),接下来使用发送广播:
private final BroadcastReceiver receiver=new BroadcastReceiver() {
		
		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			String action=intent.getAction();
			int timeCurrent = 0;
			if(action.equals(Intent.ACTION_TIME_TICK)){
				refreshDateAndTime();
				timeCurrent++;
				if(timeCurrent>0){
                  timeCurrent=0;
			}
		}
		}
	};
其中每过一分钟更新一次时间,至此,运行程序,显示当前设备的系统时间日期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值