481 lines
13 KiB
Java
481 lines
13 KiB
Java
|
|
package utils;
|
|||
|
|
|
|||
|
|
import android.text.TextUtils;
|
|||
|
|
import android.util.Log;
|
|||
|
|
|
|||
|
|
import java.text.ParseException;
|
|||
|
|
import java.text.SimpleDateFormat;
|
|||
|
|
import java.util.Calendar;
|
|||
|
|
import java.util.Date;
|
|||
|
|
import java.util.GregorianCalendar;
|
|||
|
|
import java.util.Locale;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 日期:2017.01.12
|
|||
|
|
* <p>
|
|||
|
|
* 作者:chigan
|
|||
|
|
* <p>
|
|||
|
|
* 描述:目期工具类
|
|||
|
|
*/
|
|||
|
|
public class DateUtils {
|
|||
|
|
|
|||
|
|
private static final String TAG = "DateUtils";
|
|||
|
|
|
|||
|
|
|
|||
|
|
public static String getTimeStart(String timeString) {
|
|||
|
|
String timeStamp = "";
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
|
|||
|
|
Date d = new Date();
|
|||
|
|
try {
|
|||
|
|
d = sdf.parse(timeString);
|
|||
|
|
long l = d.getTime();
|
|||
|
|
if (String.valueOf(l).length() > 10) {
|
|||
|
|
l = l / 10;
|
|||
|
|
}
|
|||
|
|
timeStamp = String.valueOf(l);
|
|||
|
|
} catch (Exception e) {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
return timeStamp;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static String getTimeEnd(String timeString) {
|
|||
|
|
String timeStamp = "";
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日HH:mm");
|
|||
|
|
Date d = new Date();
|
|||
|
|
try {
|
|||
|
|
d = sdf.parse((timeString + "23:59"));
|
|||
|
|
long l = d.getTime();
|
|||
|
|
if (String.valueOf(l).length() > 10) {
|
|||
|
|
l = l / 10;
|
|||
|
|
}
|
|||
|
|
timeStamp = String.valueOf(l);
|
|||
|
|
|
|||
|
|
} catch (Exception e) {
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
return timeStamp;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public static String getDate(String mtime) {
|
|||
|
|
return getTimeStrByLong(dataOne(mtime));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取时间串
|
|||
|
|
*
|
|||
|
|
* @param longStr 秒
|
|||
|
|
* @return 1月前 1周前 1天前 1小时前 1分钟前
|
|||
|
|
*/
|
|||
|
|
public static String getTimeStrByLong(String longStr) {
|
|||
|
|
try {
|
|||
|
|
Calendar calendar = new GregorianCalendar();
|
|||
|
|
Date date = calendar.getTime();
|
|||
|
|
Long clv = date.getTime();
|
|||
|
|
Long olv = Long.valueOf(longStr);
|
|||
|
|
|
|||
|
|
calendar.setTimeInMillis(olv); // 转毫秒
|
|||
|
|
Date date2 = calendar.getTime();
|
|||
|
|
|
|||
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|||
|
|
String curtime = format.format(date2);
|
|||
|
|
|
|||
|
|
Long belv = clv - olv;
|
|||
|
|
String retStr = "";
|
|||
|
|
// 24 * 60 * 60 * 1000;
|
|||
|
|
Long daylong = Long.valueOf("86400000");
|
|||
|
|
Long hourlong = Long.valueOf("3600000");
|
|||
|
|
Long minlong = Long.valueOf("60000");
|
|||
|
|
Long seclong = Long.valueOf("1000");
|
|||
|
|
|
|||
|
|
if (belv >= daylong * 30) {// 月
|
|||
|
|
|
|||
|
|
Long mul = belv / (daylong * 30);
|
|||
|
|
retStr = retStr + mul + "月";
|
|||
|
|
belv = belv % (daylong * 30);
|
|||
|
|
return retStr + "前";
|
|||
|
|
}
|
|||
|
|
if (belv >= daylong * 7) {// 周
|
|||
|
|
|
|||
|
|
Long mul = belv / (daylong * 7);
|
|||
|
|
retStr = retStr + mul + "周";
|
|||
|
|
belv = belv % (daylong * 7);
|
|||
|
|
return retStr + "前";
|
|||
|
|
}
|
|||
|
|
if (belv >= daylong) {// 天
|
|||
|
|
|
|||
|
|
Long mul = belv / daylong;
|
|||
|
|
retStr = retStr + mul + "天";
|
|||
|
|
belv = belv % daylong;
|
|||
|
|
return retStr + "前";
|
|||
|
|
}
|
|||
|
|
if (belv >= hourlong) {// 时
|
|||
|
|
Long mul = belv / hourlong;
|
|||
|
|
retStr = retStr + mul + "小时";
|
|||
|
|
belv = belv % hourlong;
|
|||
|
|
return retStr + "前";
|
|||
|
|
}
|
|||
|
|
if (belv >= minlong) {// 分
|
|||
|
|
Long mul = belv / minlong;
|
|||
|
|
retStr = retStr + mul + "分钟";
|
|||
|
|
return retStr + "前";
|
|||
|
|
}
|
|||
|
|
if (belv >= seclong) {
|
|||
|
|
Long mul = belv / seclong;
|
|||
|
|
retStr = retStr + mul + "秒";
|
|||
|
|
return retStr + "前";
|
|||
|
|
}
|
|||
|
|
} catch (Exception e) {
|
|||
|
|
Log.e("ttterr", longStr);
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回xxxx年-xx月xx日 xx时:xx分:xx秒
|
|||
|
|
*
|
|||
|
|
* @param strMis 毫秒的字符串形式
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getStringDataMilli(String strMis) {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|||
|
|
return sdf.format(new Date(Long.parseLong(strMis)));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回xx月xx日 xx时:xx分
|
|||
|
|
*
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getStringDataMilliNoy() {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm");
|
|||
|
|
return sdf.format(new Date(System.currentTimeMillis()));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回xxxx年-xx月xx日 xx时:xx分:xx秒
|
|||
|
|
*
|
|||
|
|
* @param strSecond 秒的字符串形式所以要*1000
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getStringDataSecond(String strSecond) {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|||
|
|
return sdf.format(new Date(Long.parseLong(strSecond) * 1000));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回xxxx年-xx月xx日
|
|||
|
|
*
|
|||
|
|
* @param strMis
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getStringYMD(String strMis) {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|||
|
|
if (TextUtils.isEmpty(strMis)) {
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
return sdf.format(new Date(Long.parseLong(strMis) * 1000));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回xxxx年-xx月xx日
|
|||
|
|
*
|
|||
|
|
* @param date
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getStringYMD(Date date) {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
|||
|
|
return sdf.format(date);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回xxxx年-xx月xx日 xx时xx分
|
|||
|
|
*
|
|||
|
|
* @param strMis
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getStringYMDHM(String strMis) {
|
|||
|
|
// Log.d(TAG, "getStringYMDHM: " + strMis);
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|||
|
|
return sdf.format(new Date(Long.parseLong(strMis) * 1000));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回xxxx年-xx月xx日 xx时xx分
|
|||
|
|
*
|
|||
|
|
* @param date
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getStringYMDHM(Date date) {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
|
|||
|
|
return sdf.format(date);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取当前是哪一天
|
|||
|
|
*
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static int getCurrentDay() {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("dd");
|
|||
|
|
return Integer.parseInt(sdf.format(new Date(System.currentTimeMillis())));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取当前是哪个月
|
|||
|
|
*
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static int getCurrentMonth() {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("MM");
|
|||
|
|
return Integer.parseInt(sdf.format(new Date(System.currentTimeMillis()))) - 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取当前是哪一年
|
|||
|
|
*
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static int getCurrentYear() {
|
|||
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
|
|||
|
|
return Integer.parseInt(sdf.format(new Date(System.currentTimeMillis())));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 根据一个时间磋,获取是多少天
|
|||
|
|
*
|
|||
|
|
* @param time
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static int getDay(long time) {
|
|||
|
|
long day = (time * 1000) / (24 * 60 * 60 * 1000);
|
|||
|
|
return (int) day;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取时间戳 是多少分钟
|
|||
|
|
*
|
|||
|
|
* @param timestamp
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static int getMinute(long timestamp) {
|
|||
|
|
long minute = timestamp * 1000 / (60 * 1000);
|
|||
|
|
return (int) minute;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 计算多少天开始
|
|||
|
|
*
|
|||
|
|
* @param starTime 时间轴
|
|||
|
|
* @return 天数
|
|||
|
|
*/
|
|||
|
|
public static int beginDate(String starTime) {
|
|||
|
|
long now = System.currentTimeMillis();
|
|||
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH");
|
|||
|
|
String d = format.format(Long.valueOf(starTime) * 1000);
|
|||
|
|
Long start = null;
|
|||
|
|
try {
|
|||
|
|
start = format.parse(d).getTime();
|
|||
|
|
} catch (ParseException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
long b = start - now;
|
|||
|
|
float f = (float) (b * 1.0 / 60 / 60 / 24 / 1000);
|
|||
|
|
double days = (b * 1.0 / 60 / 60 / 24 / 1000);
|
|||
|
|
return (int) Math.ceil(days);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 返回一个时间轴和现在的相隔时间 如果时间在当前时间之前则返回空
|
|||
|
|
*
|
|||
|
|
* @param longStr
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getTimeStrToBegin(String longStr) {
|
|||
|
|
|
|||
|
|
Calendar calendar = new GregorianCalendar();
|
|||
|
|
Date date = calendar.getTime();
|
|||
|
|
Long clv = date.getTime();
|
|||
|
|
Long olv = Long.valueOf(longStr);
|
|||
|
|
|
|||
|
|
calendar.setTimeInMillis(olv); // 转毫秒
|
|||
|
|
Date date2 = calendar.getTime();
|
|||
|
|
|
|||
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|||
|
|
String curtime = format.format(date2);
|
|||
|
|
|
|||
|
|
Long belv = olv * 1000 - clv;
|
|||
|
|
String retStr = "";
|
|||
|
|
// 24 * 60 * 60 * 1000;
|
|||
|
|
Long daylong = Long.valueOf("86400000");
|
|||
|
|
Long hourlong = Long.valueOf("3600000");
|
|||
|
|
Long minlong = Long.valueOf("60000");
|
|||
|
|
Long seclong = Long.valueOf("1000");
|
|||
|
|
|
|||
|
|
if (belv >= daylong * 30) {// 月
|
|||
|
|
|
|||
|
|
Long mul = belv / (daylong * 30);
|
|||
|
|
retStr = retStr + mul + "月";
|
|||
|
|
belv = belv % (daylong * 30);
|
|||
|
|
return retStr;
|
|||
|
|
}
|
|||
|
|
if (belv >= daylong * 7) {// 周
|
|||
|
|
|
|||
|
|
Long mul = belv / (daylong * 7);
|
|||
|
|
retStr = retStr + mul + "周";
|
|||
|
|
belv = belv % (daylong * 7);
|
|||
|
|
return retStr;
|
|||
|
|
}
|
|||
|
|
if (belv >= daylong) {// 天
|
|||
|
|
|
|||
|
|
Long mul = belv / daylong;
|
|||
|
|
retStr = retStr + mul + "天";
|
|||
|
|
belv = belv % daylong;
|
|||
|
|
return retStr;
|
|||
|
|
}
|
|||
|
|
if (belv >= hourlong) {// 时
|
|||
|
|
Long mul = belv / hourlong;
|
|||
|
|
retStr = retStr + mul + "小时";
|
|||
|
|
belv = belv % hourlong;
|
|||
|
|
return retStr;
|
|||
|
|
}
|
|||
|
|
if (belv >= minlong) {// 分
|
|||
|
|
Long mul = belv / minlong;
|
|||
|
|
retStr = retStr + mul + "分钟";
|
|||
|
|
return retStr;
|
|||
|
|
}
|
|||
|
|
if (belv >= seclong) {
|
|||
|
|
Long mul = belv / seclong;
|
|||
|
|
retStr = retStr + mul + "秒";
|
|||
|
|
return retStr;
|
|||
|
|
}
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 调此方法输入所要转换的时间输入例如("2014-06-14-16-09-00")返回时间戳
|
|||
|
|
*
|
|||
|
|
* @param time
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String dataOne(String time) {
|
|||
|
|
SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",
|
|||
|
|
Locale.CHINA);
|
|||
|
|
Date date = null;
|
|||
|
|
try {
|
|||
|
|
date = sdr.parse(time);
|
|||
|
|
return date.getTime() + "";
|
|||
|
|
} catch (ParseException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
public static Long getUnitDate(String time){
|
|||
|
|
SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd",
|
|||
|
|
Locale.CHINA);
|
|||
|
|
Date date = null;
|
|||
|
|
try {
|
|||
|
|
date = sdr.parse(time);
|
|||
|
|
return date.getTime() ;
|
|||
|
|
} catch (ParseException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
return 0l;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static String getSpecifiedDayAfter(String specifiedDay) {
|
|||
|
|
Calendar c = Calendar.getInstance();
|
|||
|
|
Date date = null;
|
|||
|
|
try {
|
|||
|
|
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
|
|||
|
|
} catch (ParseException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
c.setTime(date);
|
|||
|
|
int day = c.get(Calendar.DATE);
|
|||
|
|
c.set(Calendar.DATE, day + 1);
|
|||
|
|
String dayAfter = new SimpleDateFormat("yyyy-MM-dd")
|
|||
|
|
.format(c.getTime());
|
|||
|
|
return dayAfter;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 月份+i
|
|||
|
|
*
|
|||
|
|
* @param i
|
|||
|
|
* @return
|
|||
|
|
*/
|
|||
|
|
public static String getmonthAdd(int i, String specifiedDay) {
|
|||
|
|
Calendar c = Calendar.getInstance();
|
|||
|
|
Date date = null;
|
|||
|
|
try {
|
|||
|
|
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
|
|||
|
|
} catch (ParseException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
c.setTime(date);
|
|||
|
|
int month = c.get(Calendar.MONTH);
|
|||
|
|
c.set(Calendar.MONTH, month + i);
|
|||
|
|
String dayAfter = new SimpleDateFormat("yyyy-MM-dd")
|
|||
|
|
.format(c.getTime());
|
|||
|
|
return dayAfter;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public static Calendar getParkingStart(String info) {
|
|||
|
|
Calendar c = Calendar.getInstance();
|
|||
|
|
Date date = null;
|
|||
|
|
try {
|
|||
|
|
date = new SimpleDateFormat("yy-MM-dd").parse(DateUtils.getSpecifiedDayAfter(info));
|
|||
|
|
} catch (ParseException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
c.setTime(date);
|
|||
|
|
return c;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static Calendar getParkingMaxEnd(String info) {
|
|||
|
|
Calendar c = Calendar.getInstance();
|
|||
|
|
Date date = null;
|
|||
|
|
try {
|
|||
|
|
date = new SimpleDateFormat("yy-MM-dd").parse(DateUtils.getSpecifiedDayAfter(info));
|
|||
|
|
} catch (ParseException e) {
|
|||
|
|
e.printStackTrace();
|
|||
|
|
}
|
|||
|
|
c.setTime(date);
|
|||
|
|
int month = c.get(Calendar.MONTH);
|
|||
|
|
c.set(Calendar.MONTH, month + 12);
|
|||
|
|
return c;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static String getUnit(String info) {
|
|||
|
|
if (TextUtils.isEmpty(info)) {
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
boolean numericZidai = isNumericZidai(info);
|
|||
|
|
if (numericZidai) {
|
|||
|
|
return info + "单元";
|
|||
|
|
} else {
|
|||
|
|
return info;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static boolean isNumericZidai(String str) {
|
|||
|
|
|
|||
|
|
for (int i = 0; i < str.length(); i++) {
|
|||
|
|
System.out.println(str.charAt(i));
|
|||
|
|
if (!Character.isDigit(str.charAt(i))) {
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|