首页 > 系统 > Android > 正文

Android进阶之使用时间戳计算时间差

2019-10-22 18:19:47
字体:
来源:转载
供稿:网友

本文实例为大家分享了Android使用时间戳计算时间差的具体代码,供大家参考,具体内容如下

因当前项目需要计算时间差,进行数据处理,所以在Csdn上找了一下,之后修修补补是可以用的,建议大家如果用到项目中的话,可能需要把老的时间戳或者时间format存储在文件或者sp中,之后用于判断,然后进行自己的逻辑处理。

Effect :

Android,时间戳,时间差

Log执行:

Android,时间戳,时间差

注:这个可以自己简单封装下,比较简单。

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 :

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 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"> <TextView  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"  /> <TextView  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"  /> <TextView  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="新老时间计算"  /> <TextView  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=""  /></LinearLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表