中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android進階之使用時間戳計算時間差

發布時間:2020-09-01 03:47:53 來源:腳本之家 閱讀:815 作者:Mr-Man 欄目:移動開發

本文實例為大家分享了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>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁源县| 高陵县| 运城市| 开平市| 鄯善县| 调兵山市| 扎兰屯市| 临汾市| 凤庆县| 连城县| 高碑店市| 德令哈市| 澄城县| 巴彦县| 营山县| 香河县| 大悟县| 贵州省| 南京市| 临武县| 璧山县| 资阳市| 玛沁县| 黄陵县| 山阳县| 镇雄县| 汶川县| 防城港市| 道孚县| 邛崃市| 宝丰县| 松滋市| 义马市| 商都县| 密山市| 湖州市| 梅河口市| 榆树市| 泽库县| 饶平县| 大石桥市|