Android 获取系统时间以及实时刷新时间(附参考代码)

摘要:
使用date获取系统时间:date=newDate(system.currentTimeMillis())//获取系统时间currentTimeText。setValue(simpleDateFormat.format(日期));
  • 使用date获取系统时间:

private SimpleDateFormat simpleDateFormat;
private Date date;

    //onCreate中
        simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd  HH:mm");
        date = new Date(System.currentTimeMillis());//获取系统时间
        currentTimeText.setValue(simpleDateFormat.format(date));

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

在开发过程中,通常很多人都习惯使用new Date()来获取当前时间。new Date()所做的事情其实就是调用了System.currentTimeMillis()。如果仅仅是需要获得毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点。

Date date = new Date();
 
String time = date.toLocaleString();
 
Log.i("md", "时间time为: "+time);
 
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年-MM月dd日-HH时mm分ss秒 E");
 
String sim = dateFormat.format(date);
 
Log.i("md", "时间sim为: "+sim);

01-01 03:31:31.458: I/md(18530): 时间time为: Jan 1, 2015 3:31:31 AM

01-01 03:31:31.459: I/md(18530): 时间sim为: 2015年-01月01日-03时31分31秒 Thu

————————————————
版权声明:本文为CSDN博主「Vindent-C」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41508747/article/details/89511064

  • 实时刷新时间,通过系统广播实现

系统每分钟都会发送广播Intent.ACTION_TIME_TICK

        //onCreateView中
        IntentFilter filter=new IntentFilter();//创建意图过滤器对象
        filter.addAction(Intent.ACTION_TIME_TICK);//为接收器指定action,使之用于接收同action的广播
        view.getContext().registerReceiver(receiver,filter);//动态注册广播接收器
        //view.getContext是一个fragment中的context   

    private final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_TIME_TICK)) {
                //TODO更新时间
            }
        }
    }; 

android.intent.action.TIME_TICK是一个受保护的Intent,只能被系统发出。它不能通过在AndroidManifest.xml文件中注册(静态注册)来接收广播,只能通过Context.registerReceiver()在代码中动态注册。

为提高安卓系统的安全性,从9.0开始,系统全面禁止静态注册的广播,凡是静态广播在9.0系统中都不再有效,因此为了适配Android 9.0,静态注册的广播都 要换成在代码里声明的动态广播

参考:

https://blog.csdn.net/qq_41508747/article/details/89511064 Android开发中获取系统时间的几种种方式 by Vindent-C

https://blog.csdn.net/u011397174/article/details/18354523 android.intent.action.TIME_TICK by arieluc

移动开发丛书·Android Studio开发实战:从零基础到App上线  欧阳燊著

免责声明:文章转载自《Android 获取系统时间以及实时刷新时间(附参考代码)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇转:永久解决火狐浏览器出现的flash版本更新问题WebUploader上传大文件的三种解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux系统管理06 -----磁盘管理

一、 磁盘结构 1、 硬盘的物理结构(1~3) 盘片:硬盘有多个盘片,每个盘片2面。 磁头:每面一个磁头 2、 硬盘的数据结构 扇区:盘片被分为多个扇形区域,每个扇形区存放512字节的数据 磁道:同一盘片不同半径的同心圆 柱面:不同盘片相同半径构成的圆柱面 3、 硬盘存储容量=磁头数*磁道 (柱面) 数*每道扇区数*每扇区字节数 4、 硬盘容量:作为计算机...

第一次使用Ubuntu20.04系统-遇坑小记

第一次使用Ubuntu20.04系统-遇坑小记 最近发现Linux系统是程序员前进的必经之路(立志做一名“倔强又装逼的程序员”),所以果断在自己的笔记本上安装了最新的Ubuntu20.04系统,刚开始使用确实不是很习惯(应该还是自己比较菜),尤其是许多命令行的操作方式不是很熟悉、操作系统的一些相关知识也不是很了解,不过用了几天,发现Linux(Ubuntu...

Github Actions 还能做这些事

前言 最近公司内部项目的发布流程接入了 GitHub Actions,整个体验过程还是比较美好的;本文主要目的是对于没有还接触过 GitHub Actions的新手,能够利用它快速构建自动测试及打包推送 Docker 镜像等自动化流程。 创建项目 本文主要以 Go 语言为例,当然其他语言也是类似的,与语言本身关系不大。 这里我们首先在 GitHub 上创...

mongodb 操作 Date字段类型 mongodb shell api

一,环境 php 7.2 + thinkphp 5 mongodb 3.4 二,针对Date字段的操作 mongodb shell: 写入: db.students3.insert([ { "_id" : 1, "tests" : [ 95, 92, 90 ], "lastUpdate" : ISODate("2019-01-01T00:00:00Z")...

C#学习笔记(6)

在我们编写一个带有存储数据的功能的程序的时候,总免不了要与数据库打交道,于是LINQ(语言集成查询)就应运而生了。LINQ是一组C#和VB的语言拓展,它允许编写C#或者VB代码以查询数据库相同的方式操作内存数据。 与一般的SQL语言不同的,用户在使用LINQ语言的时候可以自定义数据类型,这样就为程序员们提供了很大的便利,LINQ中包含40多个查询操作,其基...

vue+elemnet开发遇到的问题

1 选择时间时,代码 <el-form-item label="订货日期" label-width="80px"> <el-date-picker size="small" type="daterange" v-model="OrderDate" value-format="yyyy-MM-dd"range-separato...