package com.hqyg.disjob.monitor.util;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
/**
* <pre>
*
* File: DatePart2.java
*
* Copyright (c) 2016, globalegrow.com All Rights Reserved.
*
* Description:
* 获取日期段,格式化话后输出方便进行统计使用
*
* Revision History
*
* Date: 2016年8月11日
* Author: Disjob
*
* </pre>
*/
public class DatePart {
private static String CONCAT = "0";//拼接
private static String FORMAT_HOUR = "yyyy-MM-dd";//以小时作为格式化
private static String FORMAT_HOUR_SEG = " ";//分段,连接符
private static String FORMAT_DAY = "yyyy-MM";//以天作为格式化
private static String FORMAT_DAY_SEG = "-";//分段,连接符
//根据日期,限制大小,连接符,格式进行日期格式化
public static List<String> formating(Date date,int limit,String seg,String format){
SimpleDateFormat sdf = new SimpleDateFormat(format);
String basics = sdf.format(date);//格式化基础字符串
List<String> fdates = new LinkedList<String>();
for(int index = 0; index <= limit; index++){
fdates.add(basics+seg+(index>9?index:CONCAT+index));//为了格式统一,解决10和0-9之间位数不一致问题
}
return fdates;
}
//今天,按照小时为单位
public static List<String> today(){
Calendar cal = Calendar.getInstance();
return formating(cal.getTime(),cal.getActualMaximum(Calendar.HOUR_OF_DAY),FORMAT_HOUR_SEG,FORMAT_HOUR);//取小时数
}
//昨天,按照小时为单位
public static List<String> yesterday(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);//负数为前,正为后
return formating(cal.getTime(),cal.getActualMaximum(Calendar.HOUR_OF_DAY),FORMAT_HOUR_SEG,FORMAT_HOUR);//取小时数
}
//这个月,按照天为单位
public static List<String> thisMonth(){
Calendar cal = Calendar.getInstance();
return formating(cal.getTime(),cal.getActualMaximum(Calendar.DATE),FORMAT_DAY_SEG,FORMAT_DAY);//取天数
}
//上个月,按照天为单位
public static List<String> lastMonth(){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);//负数为前,正为后
return formating(cal.getTime(),cal.getActualMaximum(Calendar.DATE),FORMAT_DAY_SEG,FORMAT_DAY);//取天数
}
//今年
public static List<String> thisYear(){
List<String> fdates = new LinkedList<String>();
for(int index = 1;index < 13;index++){
fdates.add(Calendar.getInstance().get(Calendar.YEAR)+FORMAT_DAY_SEG+(index>9?index:CONCAT+index));
}
return fdates;
}
//近7天,包括今天。按照天为单位
public static List<String> last7days() {
List<String> fdates = new LinkedList<String>();
SimpleDateFormat fomater = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
for (int i = 6; i >= 0; i--) {
calendar.set(Calendar.DAY_OF_YEAR, dayOfYear - i);
fdates.add(fomater.format(calendar.getTime()));
}
return fdates;
}
}