android
android 时间差 秒-凯发ag旗舰厅登录网址下载
本文实例为大家分享了android使用时间戳计算时间差的具体代码,供大家参考,具体内容如下
因当前项目需要计算时间差,进行数据处理,所以在csdn上找了一下,之后修修补补是可以用的,建议大家如果用到项目中的话,可能需要把老的时间戳或者时间format存储在文件或者sp中,之后用于判断,然后进行自己的逻辑处理。
effect :
log执行:
注:这个可以自己简单封装下,比较简单。
mainactivity :
package com.bakheet.effect.time;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.util.log;
import android.view.view;
import android.widget.textview;
import android.widget.toast;
import java.text.parseexception;
import java.text.simpledateformat;
import java.util.date;
public class mainactivity extends appcompatactivity {
private simpledateformat format;
public string oldtime ;
public string newtime;
private textview mcontent;
private textview mcount;
private textview mbtnnow;
private textview mbtn;
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
format = new simpledateformat("yyyy-mm-dd hh:mm:ss");
mbtn = (textview) findviewbyid(r.id.btn);
mbtnnow = (textview) findviewbyid(r.id.btn_now);
mcount = (textview) findviewbyid(r.id.count);
mcontent = (textview) findviewbyid(r.id.content);
//csdn内一篇博主的博文
mbtn.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view view) {
toast.maketext(mainactivity.this,"csdn博友事件触发",toast.length_short).show();
try {
date d1 = format.parse("2012-11-05 12:00:00");//后的时间
date d2 = format.parse("2012-11-04 11:10:00"); //前的时间
long diff = d1.gettime() - d2.gettime(); //两时间差,精确到毫秒
long day = diff / (1000 * 60 * 60 * 24); //以天数为单位取整
long hour=(diff/(60*60*1000)-day*24); //以小时为单位取整
long min=((diff/(60*1000))-day*24*60-hour*60); //以分钟为单位取整
long second=(diff/1000-day*24*60*60-hour*60*60-min*60);//秒
log.e("tag","day =" day);
log.e("tag","hour =" hour);
log.e("tag","min =" min);
log.e("tag","second =" second);
mcontent.settext("day = " day ",hour = " hour ",min = " min ",second = " second);
} catch (exception e) {
e.printstacktrace();
}
}
});
//获取当前的时间戳和时间转译 - 这里同时用存储老的时间
mbtnnow.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view view) {
toast.maketext(mainactivity.this,"获取当前时间",toast.length_short).show();
long timemillis = system.currenttimemillis();
log.e("tag timemillis =","" timemillis);
//将时间戳转为日期格式
string time = stamptodate(timemillis);
log.e("tag time = ",time);
oldtime=time;
log.e("tag newtime = ",oldtime);
try {
//将日期格式转回为时间戳的格式
string what = datetostamp(time);
log.e("tag what = ",what);
} catch (parseexception e) {
e.printstacktrace();
}
}
});
//this is my code - - 主要作用与计算时间差 (会用到之前我们的记录的时间,所以使用的时候,无比先执行上面的逻辑)
mcount.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view view) {
//思维方式,使用最新的时间减去之前我们的老时间进行运算
toast.maketext(mainactivity.this,"新老时间触发",toast.length_short).show();
long timemillis = system.currenttimemillis();
log.e("tag timemillis =","" timemillis);
string time = stamptodate(timemillis);
log.e("tag time = ",time);
newtime=time;
log.e("tag newtime = ",newtime);
try {
//严格来讲,在使用中这里需要判断的,尤其是null的判断,这里我们使用的了 try catch
date d1 = format.parse(newtime); //当前时间
date d2 = format.parse(oldtime); //之前记录的时间
long diff = d1.gettime() - d2.gettime(); //两时间差,精确到毫秒
//以天数为单位取整
long day = diff / (1000 * 60 * 60 * 24);
//以小时为单位取整
long hour=(diff/(60*60*1000)-day*24);
//以分钟为单位取整
long min=((diff/(60*1000))-day*24*60-hour*60);
//以秒为单位
long second=(diff/1000-day*24*60*60-hour*60*60-min*60);
log.e("tag","day =" day);
log.e("tag","hour =" hour);
log.e("tag","min =" min);
log.e("tag","second =" second);
mcontent.settext("day = " day ",hour = " hour ",min = " min ",second = " second);
} catch (exception e) {
//建议抛出总异常
e.printstacktrace();
}
}
});
}
/**
* 将时间转换为时间戳
*/
public string datetostamp(string time) throws parseexception {
simpledateformat simpledateformat = new simpledateformat("yyyy-mm-dd hh:mm:ss");
date date = simpledateformat.parse(time);
long ts = date.gettime();
return string.valueof(ts);
}
/**
* 将时间戳转换为时间
*/
public string stamptodate(long timemillis){
simpledateformat simpledateformat = new simpledateformat("yyyy-mm-dd hh:mm:ss");
date date = new date(timemillis);
return simpledateformat.format(date);
}
}
mainactivity xml :
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/activity_main"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.bakheet.effect.time.mainactivity">
android:layout_margintop="10dp"
android:layout_width="match_parent"
android:padding="5dp"
android:layout_height="wrap_content"
android:text="csdn博友时间差算法"
android:gravity="center"
android:id="@ id/btn"
/>
android:layout_margintop="10dp"
android:layout_width="match_parent"
android:padding="5dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="当前时间"
android:id="@ id/btn_now"
/>
android:layout_margintop="10dp"
android:layout_width="match_parent"
android:padding="5dp"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@ id/count"
android:text="新老时间计算"
/>
android:layout_margintop="10dp"
android:layout_width="match_parent"
android:padding="5dp"
android:layout_height="wrap_content"
android:gravity="center"
android:id="@ id/content"
android:text=""
/>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: android进阶之使用时间戳计算时间差
本文地址: http://www.cppcns.com/ruanjian/android/215060.html
总结
以上是凯发ag旗舰厅登录网址下载为你收集整理的android 时间差 秒_android进阶之使用时间戳计算时间差的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。
- 上一篇: multisim怎么设置晶体管rbe_m
- 下一篇: vue可视化拖拽生成工具_vdesjs: