package com.jqyd.android.module.lbs.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
public class JqydDateUtil {
private static TimeZone china=TimeZone.getTimeZone("GMT+08:00");
public static String getDateMillisecond(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
return sdf.format(date);
}
public static String getDateforMill(Date date){
return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
}
public static String getDateSecOne(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd/HH:mm:ss");
return sdf.format(date);
}
public static String getDateDayOne(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
public static String getDateDayTwo(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
return sdf.format(date);
}
public static String getHourMin(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return sdf.format(date);
}
public static String getDateSecTwo(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
public static int getIntValeHourMin(){
Calendar calendar = Calendar.getInstance(china);
return calendar.get(Calendar.HOUR_OF_DAY) * 60+ calendar.get(Calendar.MINUTE);
}
public static Calendar getTodayHourMinCalendar(int onhour, int onminute){
Calendar calendar = Calendar.getInstance(china);
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, onhour);
calendar.set(Calendar.MINUTE, onminute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar;
}
public static Calendar getTomorrowHourMinCalendar(int onhour, int onminute){
Calendar calendar = Calendar.getInstance(china);
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, onhour);
calendar.set(Calendar.MINUTE, onminute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
return calendar;
}
public static int timeInTheMiddle(int startTime, int endTime){
//-1:在开始时间前;0:在两个时间之间;-1:在结束时间后
int nowTime = getIntValeHourMin();
System.out.println("time in the middle"+startTime +" "+ nowTime +" "+endTime);
if( nowTime< startTime){
return -1;
}else if(startTime <= nowTime && nowTime <= endTime ){
return 0;
}else {
return 1;
}
}
public static Calendar getCalendarFromInt (int timeValue){
Calendar calendar = Calendar.getInstance(china);
int hour = timeValue/60;
int minute = timeValue%60;
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
return calendar;
}
public static Calendar getCalendarFromLong(long timeValue){
Calendar calendar = Calendar.getInstance(china);
calendar.setTimeInMillis(timeValue);
return calendar;
}
public static int outOfPeriod(int startTime, int period,int hisUpTime){
//-1:在间隔时间内;0:正好在间隔时间点上,需要上报;1:超过间隔时间,需要上报一次,并休眠到下个间隔时间点上;
int nowTime = getIntValeHourMin();
int beforeTime = getBeforeTimeInt(nowTime, startTime, period);
if(beforeTime==hisUpTime){
//说明上一次上报过了
int nextTurnTime = getNextTurnTimeInt(nowTime,startTime, period);
System.out.println(nowTime+" "+nextTurnTime);
if(nowTime < nextTurnTime){
return -1;
}else if(nextTurnTime == nowTime){
return 0;
}else{
return 1;
}
}else if(beforeTime == nowTime){
return 0;
}else{
//上一次没上报过
return 1;
}
// else {
// return 1;
// }
}
public static int getNextTurnTimeInt(int nowTime ,int startTime, int period){
int beforeTime = (nowTime-startTime)%period;
if(beforeTime ==0 ){
return nowTime;
}else{
return nowTime +(period-beforeTime);
}
}
/**
* 上一个上报的时间点
* @param nowTime
* @param startTime
* @param period
* @return
* 荆林枭
*/
public static int getBeforeTimeInt(int nowTime,int startTime, int period){
int beforeTime = (nowTime-startTime)%period;
return nowTime-beforeTime;
}
/**
* 将long类型的时间转化为int类型分钟值
* @param l
* @return
* 荆林枭
*/
public static int longToIntForHisUpTime(long l){
int time=0;
String string = new SimpleDateFormat("HH-mm").format(l);
String[] split = string.split("-");
if(split!=null && split.length>0){
time = Integer.parseInt(split[0])*60 + Integer.parseInt(split[1]);
}
return time;
}
public static Calendar getNextTurnTime(int startTime, int period){
int nowTime = getIntValeHourMin();
int beforeTime = (nowTime-startTime)%period;
int nextTurn = nowTime +(period-beforeTime);
return getCalendarFromInt(nextTurn);
}
/**
*
* @param isold TRUE则是得到当前日期前七天,FALSE则是得到后七天的日期
* @return
* jlx
*/
public static List<String> getSevenDay(boolean isold) {
List<String> list = new ArrayList<String>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i <= 7; i++) {
Date date = getDate(dateFormat.format(System.currentTimeMillis()),
i);
list.add(dateFormat.format(date));
}
return list;
}
/**
* 根据输入的日期字符串 和 提前天数 , 获得 指定日期提前几天的日期对象
*
* @param dateString
* 日期对象 ,格式如 1900-1-30
* @param lazyDays
* 以后的天数
* @return 指定日期倒推指定天数后的日期对象
* @throws ParseException
*/
public static Date getDate(String dateString, int afterDays) {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date inputDate = null;
try {
inputDate = dateFormat.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar cal = Calendar.getInstance();
cal.setTime(inputDate);
int inputDayOfYear = cal.get(Calendar.DAY_OF_YEAR);
cal.set(Calendar.DAY_OF_YEAR, inputDayOfYear - afterDays);
return cal.getTime();
}
public static long timeToLong(String str){
long l = 0;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
try {
l = sdf.parse(str).getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return l;
}
}