最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android進(jìn)階之使用時(shí)間戳計(jì)算時(shí)間差

 更新時(shí)間:2017年12月18日 16:20:14   作者:Mr-Man  
這篇文章主要為大家詳細(xì)介紹了Android進(jìn)階之使用時(shí)間戳計(jì)算時(shí)間差,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Android使用時(shí)間戳計(jì)算時(shí)間差的具體代碼,供大家參考,具體內(nèi)容如下

因當(dāng)前項(xiàng)目需要計(jì)算時(shí)間差,進(jìn)行數(shù)據(jù)處理,所以在Csdn上找了一下,之后修修補(bǔ)補(bǔ)是可以用的,建議大家如果用到項(xiàng)目中的話,可能需要把老的時(shí)間戳或者時(shí)間format存儲(chǔ)在文件或者sp中,之后用于判斷,然后進(jìn)行自己的邏輯處理。

Effect :

Log執(zhí)行:

注:這個(gè)可以自己簡(jiǎn)單封裝下,比較簡(jiǎn)單。

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內(nèi)一篇博主的博文
  mBtn.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    Toast.makeText(MainActivity.this,"Csdn博友事件觸發(fā)",Toast.LENGTH_SHORT).show();
    try {
    Date d1 = format.parse("2012-11-05 12:00:00");//后的時(shí)間
    Date d2 = format.parse("2012-11-04 11:10:00"); //前的時(shí)間
    Long diff = d1.getTime() - d2.getTime(); //兩時(shí)間差,精確到毫秒

    Long day = diff / (1000 * 60 * 60 * 24);   //以天數(shù)為單位取整
    Long hour=(diff/(60*60*1000)-day*24);    //以小時(shí)為單位取整
    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();
    }
   }
  });

  //獲取當(dāng)前的時(shí)間戳和時(shí)間轉(zhuǎn)譯 - 這里同時(shí)用存儲(chǔ)老的時(shí)間
  mBtnNow.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    Toast.makeText(MainActivity.this,"獲取當(dāng)前時(shí)間",Toast.LENGTH_SHORT).show();
    long timeMillis = System.currentTimeMillis();
    Log.e("tag timeMillis =",""+timeMillis);
    //將時(shí)間戳轉(zhuǎn)為日期格式
    String time = stampToDate(timeMillis);
    Log.e("tag time = ",time);
    oldtime=time;
    Log.e("tag newtime = ",oldtime);
    try {
     //將日期格式轉(zhuǎn)回為時(shí)間戳的格式
     String what = dateToStamp(time);
     Log.e("tag what = ",what);
    } catch (ParseException e) {
     e.printStackTrace();
    }

   }
  });

  //This is my code - - 主要作用與計(jì)算時(shí)間差 (會(huì)用到之前我們的記錄的時(shí)間,所以使用的時(shí)候,無比先執(zhí)行上面的邏輯)
  mCount.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    //思維方式,使用最新的時(shí)間減去之前我們的老時(shí)間進(jìn)行運(yùn)算

    Toast.makeText(MainActivity.this,"新老時(shí)間觸發(fā)",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 {
    //嚴(yán)格來講,在使用中這里需要判斷的,尤其是null的判斷,這里我們使用的了 try catch

    Date d1 = format.parse(newtime); //當(dāng)前時(shí)間
    Date d2 = format.parse(oldtime); //之前記錄的時(shí)間

    Long diff = d1.getTime() - d2.getTime(); //兩時(shí)間差,精確到毫秒
     //以天數(shù)為單位取整
     Long day = diff / (1000 * 60 * 60 * 24);
     //以小時(shí)為單位取整
     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();
    }
   }
  });
 }


  /**
  * 將時(shí)間轉(zhuǎn)換為時(shí)間戳
  */
 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);
 }

  /**
  * 將時(shí)間戳轉(zhuǎn)換為時(shí)間
  */
 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博友時(shí)間差算法"
  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="當(dāng)前時(shí)間"
  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="新老時(shí)間計(jì)算"
  />
 <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>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Kotlin中的Checked Exception機(jī)制淺析

    Kotlin中的Checked Exception機(jī)制淺析

    這篇文章主要給大家介紹了關(guān)于Kotlin中Checked Exception機(jī)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Android應(yīng)用的LinearLayout中嵌套R(shí)elativeLayout的布局用法

    Android應(yīng)用的LinearLayout中嵌套R(shí)elativeLayout的布局用法

    這篇文章主要介紹了Android應(yīng)用的LinearLayout中嵌套R(shí)elativeLayout的布局用法,文后還給出了線性布局中一些組件位置的調(diào)試經(jīng)驗(yàn),需要的朋友可以參考下
    2016-04-04
  • Android利用shape實(shí)現(xiàn)各種簡(jiǎn)單的形狀

    Android利用shape實(shí)現(xiàn)各種簡(jiǎn)單的形狀

    這篇文章主要給大家介紹了關(guān)于Android中利用shape實(shí)現(xiàn)各種簡(jiǎn)單的形狀的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-05-05
  • Android中 service組件詳解

    Android中 service組件詳解

    Service是Android的四大組件之一,以下是我結(jié)合Android Doc和網(wǎng)上資料的學(xué)習(xí)總結(jié),有不準(zhǔn)確的地方請(qǐng)高手指出,互相學(xué)習(xí)嘛。。。
    2016-08-08
  • Android控件gridview實(shí)現(xiàn)單行多列橫向滾動(dòng)效果

    Android控件gridview實(shí)現(xiàn)單行多列橫向滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了Android控件gridview實(shí)現(xiàn)單行多列橫向滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android Flutter實(shí)現(xiàn)淘寶App的搜索推薦

    Android Flutter實(shí)現(xiàn)淘寶App的搜索推薦

    這篇文章主要為大家詳細(xì)介紹了Android?Flutter如何模擬實(shí)現(xiàn)淘寶App的搜索推薦,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下
    2023-07-07
  • Android ListView實(shí)現(xiàn)上拉加載下拉刷新和滑動(dòng)刪除功能

    Android ListView實(shí)現(xiàn)上拉加載下拉刷新和滑動(dòng)刪除功能

    這篇文章主要為大家詳細(xì)介紹了Android ListView實(shí)現(xiàn)上拉加載下拉刷新和滑動(dòng)刪除功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Android實(shí)現(xiàn)原生分享功能

    Android實(shí)現(xiàn)原生分享功能

    這篇文章主要介紹了Android實(shí)現(xiàn)原生分享功能,只能分享文字和圖片,不能單獨(dú)分享圖片或者文字,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 鴻蒙手機(jī)版JNI實(shí)戰(zhàn)案例解析(JNI開發(fā)、SO庫(kù)生成、SO庫(kù)使用)

    鴻蒙手機(jī)版JNI實(shí)戰(zhàn)案例解析(JNI開發(fā)、SO庫(kù)生成、SO庫(kù)使用)

    這篇文章主要介紹了鴻蒙手機(jī)版JNI實(shí)戰(zhàn)(JNI開發(fā)、SO庫(kù)生成、SO庫(kù)使用)的相關(guān)資料,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Android編寫Router路由框架實(shí)例過程詳解

    Android編寫Router路由框架實(shí)例過程詳解

    為什么要用路由框架,路由框架哪些好處等等,在此就不做解釋
    最常用的框架是ARouter,那是不是可以自己寫一個(gè)路由框架呢,不參考ARouter的方式
    2023-04-04

最新評(píng)論

内黄县| 阿荣旗| 廉江市| 奎屯市| 中方县| 湘阴县| 南阳市| 云阳县| 耒阳市| 莱州市| 兴国县| 女性| 庆安县| 徐州市| 沂水县| 沂水县| 雷波县| 漳平市| 太和县| 南投市| 怀仁县| 贵州省| 喀喇沁旗| 莱西市| 仪陇县| 陇川县| 沁源县| 望江县| 阿勒泰市| 绥芬河市| 北宁市| 合肥市| 博乐市| 巨野县| 乐业县| 株洲市| 蓬溪县| 长沙县| 华池县| 兴安县| 浦江县|