package com.time.zz.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; public class MainActivity extends AppCompatActivity { private String startime="2016-11-09 16:14:35";//初始时间.初始时间是固定不变的,随着系统当前时间的变化,发布时间自然就变成了1分钟前,1小时前,一天前... //private String startime="2016-11-08 16:14:35"; //private String startime="2016-11-07 16:14:35"; // private String startime="2016-11-06 16:14:35"; // private String startime="2016-10-06 16:14:35"; private TextView tv_time; private long formattingtime; private long TimeCha; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_time= (TextView) findViewById(R.id.tv_time); timecha(startime); } private String timecha(String startime) { Calendar calendar=Calendar.getInstance(); SimpleDateFormat dataformat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); long currenttime = calendar.getTimeInMillis();//获取系统当先时间的毫秒值 Log.i("作者测试时间的毫秒值",currenttime+""); try {//如果你的初始时间是格式化过的,则需要先转化成毫秒值 formattingtime = dataformat.parse(startime).getTime(); } catch (ParseException e) { e.printStackTrace(); }
//这里需要注意,因为获取的时间因为时差的缘故已经自动加上了8小时的时间,所以这里需要减去.如果不减去,就算是你刚刚发布的动态也会显示是8小时之前 TimeCha =((currenttime-formattingtime)/1000)-(8*60*60);//将毫秒值转化成分钟数
StringBuffer str=new StringBuffer(); if (TimeCha>0&TimeCha<60){ String just = str.append("刚刚").toString(); tv_time.setText(just); Log.i("shijian",just); }else if (TimeCha>=60&&TimeCha<3600){ String minute = str.append(TimeCha / 60 + "分钟前").toString(); tv_time.setText(minute); }else if (TimeCha>=3600&&TimeCha<3600*24){ String hour = str.append(TimeCha / 3600 + "小时前").toString(); tv_time.setText(hour); }else if (TimeCha>=3600*1*24&&TimeCha<3600*2*24){ String day1 = str.append("1天前").toString(); tv_time.setText(day1); }else if (TimeCha>=3600*2*24&&TimeCha<3600*3*24){ String day2 = str.append("2天前").toString(); tv_time.setText(day2); }else if (TimeCha>=3600*3*24&&TimeCha<3600*4*24){ String day3 = str.append("3天前").toString(); tv_time.setText(day3); }else if (TimeCha>=3600*8*24){ tv_time.setText(startime); } return startime; } }