package com.jqyd.pub; 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; import com.jqyd.app.ShareMethod; import com.jqyd.app.WriteFile; 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(); } }