Android 显示系统实时时间
获取系统当前时间 System.currentTimeMillis(); 需要开启一个线程,
我们通过Handler来实现 实时更新时间
效果图
Java实现:
- Activity.xml代码
<TextView
android:id="@+id/real_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-- --"
/>
- MainActivity代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
real_time=findViewById(R.id.real_time);
Startthread();
}
//开启一个子线程
private void Startthread(){
new Thread(){
@Override
public void run() {
do {
try {
Thread.sleep(1000);
Message message=new Message();
message.what=1;
handler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}while (true);
}
}.start();
}
//在主线程中进行数据处理
private Handler handler=new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
switch (msg.what){
case 1:
//获取系统时间
long time = System.currentTimeMillis();
CharSequence format = DateFormat.format("hh:mm:ss yyyy-MM-dd", time);
real_time.setText(format);
break;
}
}
};
yyyy-MM-dd hh:mm:ss
分别带代表: 年-月-日-时-分-秒
Kotlin 实现
//开启一个子线程
private fun Startthread(){
object : Thread() {
override fun run() {
do {
sleep(1000)
val message= Message()
message.what=1
handler.sendMessage(message)
}while (true)
}
}.start()
}
val handler:Handler= @SuppressLint("HandlerLeak")
object :Handler() {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
when (msg.what) {
1 -> {
val time=System.currentTimeMillis()
val format:CharSequence= DateFormat.format("日期:"+"yyyy"+"年"+"MM"+"月"+"dd"+"日"+"hh:mm:ss"+" "+"E", time)
date_time_text.text=format
}
else -> {
}
}
}
}
yyyy-MM-dd hh:mm:ss E (EEEE)
分别带代表: 年-月-日-时-分-秒-星期(周)
判断上/下午
long time = System.currentTimeMillis();
final Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(time);
int hour = mCalendar.get(Calendar.HOUR);
int apm = mCalendar.get(Calendar.AM_PM);
apm=0 表示上午,apm=1表示下午。
其他的都能根据上面的hour一样的方式找到年月日时分秒
以上是显示实时时间。[^1]