Android 时间转换工具类(初识版本)
我就是一个早上偶尔迟到,然后就挨饿的程序员。在项目中总是会有时间的处理,我根据我们公司的项目来写的一个时间处理类。如果你们有用到的地方可以参考,并提出自己的想法,我们相互学习。
注意:有时候的我命名不规范,在看源码的时候请小声吐槽。
public class TimeUtil {
方法1:获取传入的时间是不是今天(手机时间必须是正确的)
/**
* @param day 传入的 时间 "2016-06-28 10:10:30"
*@param type 你的时间格式
* @return true今天 false不是
* @throws ParseException
*/
public boolean IsToday(String day, String type) {
Calendar pre = Calendar.getInstance();
Date predate =new Date(System.currentTimeMillis());
pre.setTime(predate);
Calendar cal = Calendar.getInstance();
Date date =null;
if (type ==null) {
type ="yyyy-MM-dd HH:mm:ss";
}
try {
date = getSimpleDateFormat(type).parse(day);
}catch (ParseException e) {
e.printStackTrace();
}
cal.setTime(date);
if (cal.get(Calendar.YEAR) == (pre.get(Calendar.YEAR))) {
int diffDay = cal.get(Calendar.DAY_OF_YEAR)
- pre.get(Calendar.DAY_OF_YEAR);
return diffDay <=0;
}
return false;
}
方法1:(重载1)
/**
* @param day 传入正确的时间格式 yyyy-MM-dd HH:mm:ss
* @return
*/
public boolean IsToday(String day){
return IsToday(day,null);
}
方法1:(重载2)
/**
*
* @param time 传入毫秒
* @return
*/
public boolean IsToday(long time){
return IsToday(getTime(time),null);
}
方法2:获取传入的时间是今天 明天 或者 周几
/***
* @param time 时间
* @return 返回值 今天 明天 或者 周几
*/
public String checkOption(String time) {
SimpleDateFormat sdf = getSimpleDateFormat("yyyy-MM-dd");
Date predate =new Date(System.currentTimeMillis());
Calendar cl = Calendar.getInstance();
String strTime = getTime(time, "yyyy-MM-dd");
String str ="";
if (sdf.format(cl.getTime()).equals(strTime)) {
str ="今天";
}else {
cl.setTime(predate);
cl.add(Calendar.DAY_OF_YEAR, 1);
if (sdf.format(cl.getTime()).equals(strTime)) {
str ="明天";
}else {
str = getWeek(time);
}
}
return str;
}
方法2:(重载1)
public String checkOption(long time){
return checkOption(getTime(time));
}
获取SimpleDateFormat
@NonNull
private SimpleDateFormat getSimpleDateFormat(String s) {
return new SimpleDateFormat(s);
}
方法2:(重载2)
public String getTime(String time, String mFormat) {
return getTime(time, mFormat, null, 0);
}
方法3:获取你需要的时间格式 比如:2018年10月10日 12点12分12秒 2018-10-10 12:12:12 等等。
/**
* @param time 你传入的时间 格式要求 "yyyy-MM-dd HH:mm:ss" 或者 mYTypeTime 给出你的时间格式。
* @param mFormat 返回的时间格式
* @param mYTypeTime 你自己的时间格式 和Time参数相对应
*@param mTime 机器时间 毫秒为单位 System.currentTimeMillis() 我这里测试用的机器时间。
* @return
*/
public String getTime(String time, String mFormat, String mYTypeTime, long mTime) {
int strTime =0;
long currentTime;
if (!TextUtils.isEmpty(time)&&mTime == strTime) {
currentTime = strTime;
Date date;
try {
if (TextUtils.isEmpty(mYTypeTime)) {
date = getSimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time);
}else {
date = getSimpleDateFormat(mYTypeTime).parse(time);
}
currentTime = date.getTime();
}catch (ParseException e) {
e.printStackTrace();
}
}else {
currentTime = mTime;
}
if (mFormat==null){
mFormat="yyyy-MM-dd HH:mm:ss";
}
if (mTime==0&&TextUtils.isEmpty(time)){
currentTime=System.currentTimeMillis();
}
return getSimpleDateFormat(mFormat).format(currentTime);
}
方法3:(重载1)
/**
*
* @param time
* @param mYTypeTime
* @param mFormat
* @return
*/
public String getTime(String time,String mYTypeTime, String mFormat) {
return getTime(time, mFormat, mYTypeTime, 0);
}
方法3:(重载2)
/**
*
* @param mTime 机器时间 毫秒为单位 System.currentTimeMillis()
* @param mFormat 你需要转换的时间格式。 默认值 "yyyy-MM-dd HH:mm:ss"
* @return 你需要的时间格式
*/
public String getTime(long mTime, String mFormat) {
return getTime(null, mFormat, null, mTime);
}
方法3:(重载3)
/**
*
* @param mTime 机器时间 毫秒为单位 System.currentTimeMillis()
* @return yyyy-MM-dd HH:mm:ss
*/
public String getTime(long mTime) {
return getTime(null, null, null, mTime);
}
方法3:(重载4)
/**
* 默认获取当前时间
* @return yyyy-MM-dd HH:mm:ss
*/
public String getTime( ) {
return getTime(null, null, null, 0);
}
方法3:(重载5)
/**
*默认获取当前时间
* @param mFormat 时间格式 你希望返回的时间格式
* @return
*/
public String getTime(String mFormat){
return getTime(null, mFormat, null, 0);
}
方法4:传入的时间和当前时间做对比。
/**
* 时间戳 格式 yyyy-MM-dd HH:mm:ss
* @param time
* @return 返回结果时间差
*/
public String getTimeDifference(String time) {
String str ="";
Calendar c = Calendar.getInstance();
long mowTime = System.currentTimeMillis();
long pastTimes =0;
try {
c.setTime(getSimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(time));
pastTimes = c.getTimeInMillis();
}catch (ParseException e) {
e.printStackTrace();
return str = time.substring(5, time.length() -3);
}
long shijiancha = mowTime - pastTimes;
long day = shijiancha / (3600000 *24);
if (day <1) {
long mtime = shijiancha / (3600000);
str = mtime +"小时前";
if (mtime <1) {
long branch = shijiancha %3600000 /60000;
str = branch +"分钟前";
if (branch <1) {
long second = shijiancha %60000 /1000;
str ="刚刚";
}
}
}else {
str = day +"天前";
// }
}
return str;
}
方法4:(重载1)
/**
* @param time 机器时间 毫秒为单位 System.currentTimeMillis()
* @return
*/
public String getTimeDifference(long time){
return getTimeDifference(getTime(time));
}
方法5: 判断当前日期是星期几
/**
* 判断当前日期是星期几
* @param pTime 设置的需要判断的时间 //格式如yyyy-MM-dd HH:mm:ss
* @return dayForWeek 判断结果
* @Exception 发生异常
*/
public String getWeek(String pTime) {
StringWeek="周";
SimpleDateFormat format = getSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
try {
c.setTime(format.parse(pTime));
}catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (c.get(Calendar.DAY_OF_WEEK) ==1) {
Week +="日";
}
if (c.get(Calendar.DAY_OF_WEEK) ==2) {
Week +="一";
}
if (c.get(Calendar.DAY_OF_WEEK) ==3) {
Week +="二";
}
if (c.get(Calendar.DAY_OF_WEEK) ==4) {
Week +="三";
}
if (c.get(Calendar.DAY_OF_WEEK) ==5) {
Week +="四";
}
if (c.get(Calendar.DAY_OF_WEEK) ==6) {
Week +="五";
}
if (c.get(Calendar.DAY_OF_WEEK) ==7) {
Week +="六";
}
return Week;
}
public String getWeek(long time){
return getWeek(getTime(time));
}
}
最后放一张测试图:希望对你所有帮助,也希望提出你们的想法和意见。
//毫秒转换 默认 "yyyy-MM-dd HH:mm:ss"
TimeChange.getInstanceSafe().getTimeStr(System.currentTimeMillis());
//毫秒转换 你需要的 比如 :"MM-dd"
TimeChange.getInstanceSafe().getTimeStr(System.currentTimeMillis(), "MM-dd");
//字符串转换 你需要的 比如 :"MM-dd" TimeChange.getInstanceSafe().getTimeStr("2020-12-12 00:00:00", "MM-dd");
//字符串转换 后台给的格式 如2020/12/12 00:00:00 、 2020年12月12日 00时00分00秒TimeChange.getInstanceSafe().getTimeStr("2020/12/12 00:00:00", "yyyy/MM/dd HH:mm:ss", "MM-dd");
TimeChange.getInstanceSafe().getTimeStr("2020-12-12 00:00:00", "yyyy年MM月dd日 HH时mm分ss秒", "MM-dd");
//刚刚 10秒前 1小时 等等
TimeChange.getInstanceSafe().getTimeLossStr(TimeChange.getInstanceSafe().getTimeStr(System.currentTimeMillis() - 10), null);
//转毫秒
TimeChange.getInstanceSafe().getTimemIllisecond("2020/12/12 00:00:00");