显示当前日期(实时)
System.currentTimeMillis()可以获取系统当前的时间,这里要实时显示就可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间。具体就是写一个线程,线程里面无限循环,每隔一秒发送一个消息,在主线程里面处理消息并更新时间。
class TimeThread extends Thread {
@Override
public void run() {
do {
try {
Thread.sleep(1000);
Message msg = new Message();
msg.what = 1; //消息(一个整型值)
mHandler.sendMessage(msg);// 每隔1秒发送一个msg给mHandler
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (true);
}
}
//在主线程里面处理消息并更新UI界面
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
//long sysTime = System.currentTimeMillis();//获取系统时间
//CharSequence sysTimeStr = DateFormat.format("hh:mm:ss", sysTime);//时间显示格式
// time.setText(sysTimeStr); //更新时间
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateformat.format(System.currentTimeMillis());
textView.setText(dateStr);
break;
default:
break;
}
}
};
然后在需要时启动线程就好,如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//去除标题栏
setContentView(R.layout.activity_main);
new TimeThread().start(); //启动新的线程
}
————————————————————
参考:https://blog.csdn.net/xch_yang/article/details/80590911
反过来,如果给我们一个“ 2019-03-31 22:40:00 ”字符串,得到当前日期对应的毫秒值
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
long time = dateformat.parse("2019-03-31 22:40:00").getTime();
System.out.println(time);
} catch (ParseException e) {
e.printStackTrace();
}
输出结果:I/System.out: 1554043200000
获取当前毫秒值
long nowDate = System.currentTimeMillis(); //结束时间
System.out.println(nowDate);
输出结果: I/System.out: 1585502810765
所以说,
这两种都可以获取当前时间的毫秒数,只是
一个是直接计算
long nowDate = System.currentTimeMillis(); //结束时间
System.out.println(nowDate);
一个是手动输入时间
try {
long time = dateformat.parse("2020-03-30 08:48:17").getTime();
System.out.println(time);
} catch (ParseException e) {
e.printStackTrace();
}
结果: I/System.out: 1585529297000
I/System.out: 1585529270262
计算现在距离过去某时间的天数和时间
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String dateStr = dateformat.format(System.currentTimeMillis());
// textView.setText(dateStr);
long nd = 24 * 60 * 60;
long nh = 60 * 60;
long nm = 60;
// long endDate = 1554043200000L;
try {
long endDate = dateformat.parse("2019-03-31 22:40:00").getTime();
long nowDate = System.currentTimeMillis(); //结束时间
// long ns = 1000;
// 获得两个时间的秒时间差异
long diff = (nowDate/1000L) - (endDate/1000L);
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff % nd / nh;
// 计算差多少分钟
long min = diff % nd % nh / nm;
// 计算差多少秒//输出结果
long sec = diff % nd % nh % nm;
String res = "";
if(day != 0){
res += day + "天";
}
if(hour != 0){
res += " "+hour + ":"+min + ":"+sec;
}
System.out.println(res);
} catch (ParseException e) {
e.printStackTrace();
}
运行结果:I/System.out: 364天 10:39:17
实时显示某日到现在的距离
class TimeThread extends Thread {
@Override
public void run() {
do {
try {
Thread.sleep(1000);
Message msg = new Message();
msg.what = 1; //消息(一个整型值)
mHandler.sendMessage(msg);// 每隔1秒发送一个msg给mHandler
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (true);
}
}
//在主线程里面处理消息并更新UI界面
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
long nd = 24 * 60 * 60;
long nh = 60 * 60;
long nm = 60;
// long endDate = 1554043200000L;
try {
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long endDate = dateformat.parse("2019-03-31 22:40:00").getTime();
long nowDate = System.currentTimeMillis(); //结束时间
// long ns = 1000;
// 获得两个时间的秒时间差异
long diff = (nowDate/1000L) - (endDate/1000L);
// 计算差多少天
long day = diff / nd;
// 计算差多少小时
long hour = diff % nd / nh;
long hour1 = hour/10;
long hour2 = hour%10;
// 计算差多少分钟
long min = diff % nd % nh / nm;
long min1 = min/10;
long min2 = min%10;
// 计算差多少秒//输出结果
long sec = diff % nd % nh % nm;
long sec1 = sec/10;
long sec2 = sec%10;
String distance = "";
if(day != 0){
distance += day + "天";
}
if(hour != 0){
distance += " "+hour1+hour2 + "时"+min1+min2 + "分"+sec1+sec2 +"秒";
}
// System.out.println(distance);
textView.setText(distance);
} catch (ParseException e) {
e.printStackTrace();
}
// long sysTime = System.currentTimeMillis();//获取系统时间
// CharSequence sysTimeStr = DateFormat.format("hh:mm:ss", sysTime);//时间显示格式
// textView.setText(sysTimeStr); //更新时间
/*实时显示现在时间
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = dateformat.format(System.currentTimeMillis());
textView.setText(dateStr);
*/
break;
default:
break;
}
}
};
然后oncreate里面调用
new TimeThread().start(); //启动新的线程