本文实例为大家分享了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 :
<?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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
问题内容: 我需要计算两个日期之间经过的时间。 这里要注意的是,我需要像YouTube一样用视频评论时间戳来显示它。也就是说,仅以最大的方式显示它。 例如, 如果时间是50秒前,应该说是50秒前。 如果时间超过一分钟,则应说一分钟前/十分钟前,等等。 如果时差是1小时30分钟,则应显示:一个小时前。 如果时间是一个半星期而不是一个星期前应该说的话。 如果时间超过一个月,则应说一个月前/两个月前,等
问题内容: 我在一个MySQL数据库表上工作,该表的列包含我对其他主机执行ping操作时的时间戳记(例如2014-09-16 09:08:05)。我的问题是如何在几分钟内计算出针对特定主机的第一次ping和最后一次ping之间的差异?另外,如何为上述差异的开始和结束指定不同的时间戳(而不是第一次和最后一次ping)。这是表格的示例: 我希望我已经对自己的解释足够清楚。 问题答案: 您可以使用本机的
我偶然发现了这个不错的教程https://github.com/manashmndl/DeadSimpleSpeechRecognizer其中数据是基于由文件夹分隔的样本进行训练的,所有mfcc都是一次计算的。 我正试图以不同的方式实现类似的目标。 基于此:https://librosa.github.io/librosa/generated/librosa.feature.mfcc.html l
问题内容: 我有一条流经多个系统的消息,每个系统都会记录消息的进入和退出以及时间戳和uuid messageId。我通过以下方式提取所有日志: 结果,我现在有以下事件: 我想生成一个报告(最好是堆积的条或列),用于每个系统的时间: 做这个的最好方式是什么?Logstash过滤器?kibana计算字段? 问题答案: 您只能使用Logstash 过滤器来实现此目的,但是,您必须实质性地重新实现该过滤器
问题内容: 我有一个带有StartDate列的表,我想计算两个连续记录之间的时间差。 谢谢。 @ Mark Byers和@ Yahia,我将请求表作为requestId,startdate 我想知道requestid 1和2、2和3、3和4等之间的时差是多少。我知道我需要在表上进行自我连接,但是我在子句上没有得到正确的支持。 问题答案: 要实现您的要求,请尝试以下操作(从OP编辑后进行更新): 如
问题内容: 中欧夏令时开始于三月的最后一个星期日。我们将时钟设置为02:00到03:00。如果我在数据库请求中进行时间戳计算会发生什么?比方说,在01:59? 结果是03:00还是02:00? 如果我们将时钟设置为03:00到02:00,那结束了呢? 时间从03:00更改为02:00之后…在02:00会发生什么?是02:59还是01:59? 应该如何处理?最佳实践以及Oracle Database