如何在两个Text View中分别获取动态的系统日期和时间

182 阅读1分钟

步骤如下:

布局文件:

<TextView
    android:id="@+id/date"
    android:layout_width="60dp"
    android:layout_height="40dp"
    android:gravity="center|right"
    android:layout_marginRight="10dp"
    android:textSize="10sp"
    android:textColor="#0000FF"
    app:layout_constraintRight_toRightOf="@+id/tv1"
    app:layout_constraintTop_toTopOf="@+id/tv1"/>


<TextView
    android:id="@+id/time"
    android:layout_width="60dp"
    android:layout_height="25dp"
    android:gravity="center|right"
    android:textSize="10sp"
    android:textColor="#FF0000"
    app:layout_constraintRight_toRightOf="@+id/date"
    app:layout_constraintTop_toBottomOf="@+id/date"/>

贴代码: 以下代码均写在MainActivity里

private TextView date;
private TextView time;
private static final int msgKey1=1;
date=(TextView) findViewById(R.id.date);
time=(TextView) findViewById(R.id.time);
new TimeThread().start();
public class TimeThread extends Thread{
    @Override
    public void run(){
        do {
            try {
                Thread.sleep(1000);
                Message message=new Message();
                message.what=msgKey1;
                mHandler.sendMessage(message);
            }
            catch (InterruptedException e){
                e.printStackTrace();
            }
        } while (true);
    }
}
private Handler mHandler=new Handler(){
    @Override
    public void handleMessage (Message message){
        super.handleMessage(message);
        switch (message.what){
            case msgKey1:
                date.setText(getDate());
                time.setText(getTime());
                break;
            default:
                break;
        }
    }
};
public String getDate(){
    final Calendar c = Calendar.getInstance();
    c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
    String mYear = String.valueOf(c.get(Calendar.YEAR)); // 获取当前年份
    String mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 获取当前月份
    String mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份的日期号码
    return mDay + "/" + mMonth + "/" + mYear;
}

public String getTime(){
    final Calendar c = Calendar.getInstance();
    c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
    String mHour = String.valueOf(c.get(Calendar.HOUR_OF_DAY));//时
    String mMinute = String.valueOf(c.get(Calendar.MINUTE));//分
    String mSecond = String.valueOf(c.get(Calendar.SECOND));//秒
    String mApm=String.valueOf(c.get(Calendar.AM_PM));//上午/下午
    String am_pm;
    if (c.get(Calendar.AM_PM)==0)
       am_pm="AM";
    else
      am_pm="PM";
    return mHour+":"+mMinute+":"+mSecond+" "+am_pm;


}

效果如下: image.png

拓展: 以下为静态获取系统时间,即为运行一次更新一次系统时间,仅供了解,不实用,动态获取更实用

布局文件:

<TextView
    android:id="@+id/date"
    android:layout_width="60dp"
    android:layout_height="40dp"
    android:gravity="center|right"
    android:layout_marginRight="10dp"
    android:textSize="10sp"
    android:textColor="#0000FF"
    app:layout_constraintRight_toRightOf="@+id/tv1"
    app:layout_constraintTop_toTopOf="@+id/tv1"/>


<TextView
    android:id="@+id/time"
    android:layout_width="60dp"
    android:layout_height="25dp"
    android:gravity="center|right"
    android:textSize="10sp"
    android:textColor="#FF0000"
    app:layout_constraintRight_toRightOf="@+id/date"
    app:layout_constraintTop_toBottomOf="@+id/date"/>

Java文件:

private TextView date;
private TextView time;
private static final int msgKey1=1;
date=(TextView) findViewById(R.id.date);
time=(TextView) findViewById(R.id.time);
new TimeThread().start();
 Calendar calendar = Calendar.getInstance();
 //获取系统的日期
 //年
 int year = calendar.get(Calendar.YEAR);
 //月
 int month = calendar.get(Calendar.MONTH)+1;
 //日
 int day = calendar.get(Calendar.DAY_OF_MONTH);
 //获取系统时间
 //小时
 int hour = calendar.get(Calendar.HOUR_OF_DAY);
 //分钟
 int minute = calendar.get(Calendar.MINUTE);
 //秒
 int second = calendar.get(Calendar.SECOND);

 date.setText(day+"/"+month+"/"+year);
 time.setText(hour+":"+minute+":"+second+" PM");