Files
HouseProperty/app/src/main/java/utils/DateUtils.java

481 lines
13 KiB
Java
Raw Normal View History

2020-08-14 17:07:43 +08:00
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;
}
}