- 浏览: 52596 次
- 性别:
- 来自: 北京
文章分类
最新评论
package org.sidao.common;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateFilter {
private static final String DATEFORMAT = "yyyy-MM-dd";
private static final String TIMEFORMAT = "HH:mm:ss";
private static final String DATETIMEFORMAT = "yyyy-MM-dd HH:mm:ss";
private static final String YYYY = "yyyy";
private static final String MM = "MM";
private static final String DD = "dd";
private static final String HH = "HH";
private static final String MI = "mm";
private static final String SS = "ss";
/**
* 获取当前日期
*
* @return Date
*/
public static Date getDate() {
return Calendar.getInstance().getTime();
}
/**
* 获取当前日期 格式:yyyy-MM-dd
*
* @return String
*/
public static String getCurrentDate() {
return formatDate(getDate(), DATEFORMAT);
}
/**
* 获取当前时间 格式:HH:mm:ss
*
* @return String
*/
public static String getCurrentTime() {
return formatDate(getDate(), TIMEFORMAT);
}
/**
* 获取当前日期 格式:yyyy-MM-dd HH:mm:ss
*
* @return String
*/
public static String getCurrentDateTime() {
return formatDate(getDate(), DATETIMEFORMAT);
}
/**
* 格式化指定日期
*
* @param date -
* 日期型
* @param formatStr -
* 日期格式化字符串 如:yyyy-MM-dd等
* @return String
*/
public static String formatDate(Date date, String formatStr) {
SimpleDateFormat bdf = new SimpleDateFormat(formatStr);
return bdf.format(date);
}
/**
* 格式化指定日期,格式:yyyy-MM-dd
*
* @param date
* @return
*/
public static String withDateFormat(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, DATEFORMAT);
return dateStr;
}
/**
* 格式化指定时间,格式:HH:mm:ss
*
* @param date
* @return
*/
public static String withTimeFormat(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, TIMEFORMAT);
return dateStr;
}
/**
* 格式化指定日期和时间,格式:yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static String withDateTimeFormat(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, DATETIMEFORMAT);
return dateStr;
}
/**
* 获取几天前的日期
*
* @param dayCount -
* 天数:正数
* @return Date
*/
public static Date getBeforeDayDate(int dayCount) {
Date date = null;
if (dayCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -dayCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几天前的日期 格式:yyyy-MM-dd
*
* @param dayCount -
* 天数:正数
* @return String
*/
public static String getBeforeDayDateStr(int dayCount) {
String dateStr = "";
if (dayCount > 0)
dateStr = formatDate(getBeforeDayDate(dayCount), DATEFORMAT);
return dateStr;
}
/**
* 获取几天后的日期
*
* @param dayCount -
* 天数:正数
* @return Date
*/
public static Date getAfterDayDate(int dayCount) {
Date date = null;
if (dayCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, dayCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几天后的日期 格式:yyyy-MM-dd
*
* @param dayCount -
* 天数:正数
* @return String
*/
public static String getAfterDayDateStr(int dayCount) {
String dateStr = "";
if (dayCount > 0)
dateStr = formatDate(getAfterDayDate(dayCount), DATEFORMAT);
return dateStr;
}
/**
* 获取几个月前的日期
*
* @param monthCount -
* 天数:正数
* @return Date
*/
public static Date getBeforeMonthDate(int monthCount) {
Date date = null;
if (monthCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -monthCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几个月前的日期 格式:yyyy-MM-dd
*
* @param monthCount -
* 天数:正数
* @return String
*/
public static String getBeforeMonthDateStr(int monthCount) {
String dateStr = "";
if (monthCount > 0)
dateStr = formatDate(getBeforeMonthDate(monthCount), DATEFORMAT);
return dateStr;
}
/**
* 获取几个月后的日期
*
* @param monthCount -
* 天数:正数
* @return Date
*/
public static Date getAfterMonthDate(int monthCount) {
Date date = null;
if (monthCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, monthCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几个月后的日期 格式:yyyy-MM-dd
*
* @param monthCount -
* 天数:正数
* @return String
*/
public static String getAfterMonthDateStr(int monthCount) {
String dateStr = "";
if (monthCount > 0)
dateStr = formatDate(getAfterMonthDate(monthCount), DATEFORMAT);
return dateStr;
}
/**
* 将日期字符串转换成日期型
*
* @param dateStr -
* 日期字符串,格式:yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss。
* 但只格式化日期部分,不格式化时间部分,被置为yyyy-MM-dd 00:00:00
* @return Date
*/
public static Date str2Date(String dateStr) {
Date date = null;
try {
if (!"".equals(dateStr) && null != dateStr) {
date = DateFormat.getDateInstance().parse(dateStr);
}
} catch (ParseException e) {
throw new RuntimeException("日期格式化出错!");
}
return date;
}
/**
* 将时间字符串转换成日期型
*
* @param timeStr -
* 时间字符串,必须是时间格式:HH:mm:ss
* @return Date
*/
public static Date str2Time(String timeStr) {
Date date = null;
try {
if (!"".equals(timeStr) && null != timeStr) {
date = DateFormat.getTimeInstance().parse(timeStr);
}
} catch (ParseException e) {
throw new RuntimeException("时间格式化出错!时间字符串,正确格式:HH:mm:ss。");
}
return date;
}
/**
* 将日期时间字符串转换成日期型
*
* @param dateTimeStr -
* 日期时间字符串,必须是日期时间格式:yyyy-MM-dd HH:mm:ss。
* @return Date
*/
public static Date str2DateTime(String dateTimeStr) {
Date date = null;
try {
if (!"".equals(dateTimeStr) && null != dateTimeStr) {
date = DateFormat.getDateTimeInstance().parse(dateTimeStr);
}
} catch (ParseException e) {
throw new RuntimeException(
"日期格式化出错!日期时间字符串,正确格式:yyyy-MM-dd HH:mm:ss。");
}
return date;
}
/**
* 将日期型转换成日期字符串
*
* @param date -
* 指定日期
* @return String
*/
public static String date2Str(Date date) {
String dateStr = "";
if (date != null)
dateStr = date.toString();
return dateStr;
}
/**
* 将时间字符串转换成时间
*
* @param hour -
* 小时
* @param minute -
* 分钟
* @param second -
* 秒
* @return
*/
public static Date str2Time(int hour, int minute, int second) {
Date time = null;
try {
Calendar cld = Calendar.getInstance();
cld.set(Calendar.HOUR_OF_DAY, hour);
cld.set(Calendar.MINUTE, minute);
cld.set(Calendar.SECOND, second);
time = cld.getTime();
} catch (Exception e) {
throw new RuntimeException("时间格式化出错!");
}
return time;
}
/**
* 计算两个日期之间的天数,(date2 - date1)
*
* @param date1 -
* 日期型
* @param date2 -
* 日期型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static long getDaysFromTwoDate(Date date1, Date date2,
boolean isNegative) {
long days = 0;
long millisecond = date2.getTime() - date1.getTime();
if (!isNegative) {
if (millisecond < 0) {
millisecond = -millisecond;
}
}
days = (millisecond) / (24 * 60 * 60 * 1000);
return days;
}
/**
* 计算两个日期之间的小时差,(date2 - date1)
*
* @param date1 -
* 日期型
* @param date2 -
* 日期型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static double getHourFromTwoDate(Date date1, Date date2,
boolean isNegative) {
double days = 0;
long millisecond = date2.getTime() - date1.getTime();
if (!isNegative) {
if (millisecond < 0) {
millisecond = -millisecond;
}
}
days = (millisecond) / (60d * 60d * 1000d);
DecimalFormat df = new DecimalFormat("#.##");
String str = df.format(days);
return Double.parseDouble(str);
}
/**
* 计算两个日期之间的小时差
*
* @param hour1
* @param minute1
* @param second1
* @param hour2
* @param minute2
* @param second2
* @param isNegative -
* 是否可以返回负数
* @return
*/
public static double getHourFromTwoDate(int hour1, int minute1,
int second1, int hour2, int minute2, int second2, boolean isNegative) {
double minutes = 0;
try {
Calendar cld = Calendar.getInstance();
cld.set(Calendar.HOUR_OF_DAY, hour1);
cld.set(Calendar.MINUTE, minute1);
cld.set(Calendar.SECOND, second1);
Date time1 = cld.getTime();
Calendar cld2 = Calendar.getInstance();
cld2.set(Calendar.HOUR_OF_DAY, hour2);
cld2.set(Calendar.MINUTE, minute2);
cld2.set(Calendar.SECOND, second2);
Date time2 = cld2.getTime();
minutes = getHourFromTwoDate(time1, time2, isNegative);
} catch (Exception e) {
throw new RuntimeException("时间格式化出错!");
}
return minutes;
}
/**
* 计算两个日期之间的天数,(dateStr2 - dateStr1)
*
* @param dateStr1 -
* 字符串型
* @param dateStr2 -
* 字符串型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static long getDaysFromTwoDate(String dateStr1, String dateStr2,
boolean isNegative) {
return getDaysFromTwoDate(str2Date(dateStr1), str2Date(dateStr2),
isNegative);
}
/**
* 计算两个日期之间的天数,(date - dateStr)
*
* @param dateStr -
* 字符串型
* @param date -
* 日期型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static long getDaysFromTwoDate(String dateStr, Date date,
boolean isNegative) {
return getDaysFromTwoDate(str2Date(dateStr), date, isNegative);
}
/**
* 判断是否是上午
*
* @param dateTime
* @return
*/
public static boolean isAM(Date dateTime) {
Calendar cld = Calendar.getInstance();
cld.setTime(dateTime);
int hour = cld.get(Calendar.HOUR_OF_DAY);
if (hour >= 0 && hour < 12) {
return true;
}
return false;
}
/**
* 判断是否是上午
*
* @param hour
* @return
*/
public static boolean isAM(int hour) {
if (hour >= 0 && hour < 12) {
return true;
}
return false;
}
/**
* 判断是否是下午
*
* @param dateTime
* @return
*/
public static boolean isPM(Date dateTime) {
Calendar cld = Calendar.getInstance();
cld.setTime(dateTime);
int hour = cld.get(Calendar.HOUR_OF_DAY);
if (hour >= 12 && hour < 24) {
return true;
}
return false;
}
/**
* 判断是否是下午
*
* @param hour
* @return
*/
public static boolean isPM(int hour) {
if (hour >= 12 && hour < 24) {
return true;
}
return false;
}
/**
* 获取当前日期 4位年
*
* @return
*/
public static String getYYYY() {
return formatDate(getDate(), YYYY);
}
/**
* 获取当前日期 月份
*
* @return
*/
public static String getMM() {
return formatDate(getDate(), MM);
}
/**
* 获取当前日期 天
*
* @return
*/
public static String getDD() {
return formatDate(getDate(), DD);
}
/**
* 获取指定日期 4位年
*
* @param date
* @return
*/
public static String getYYYY(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, YYYY);
return dateStr;
}
/**
* 获取指定日期 月份
*
* @param date
* @return
*/
public static String getMM(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, MM);
return dateStr;
}
/**
* 获取指定日期 天
*
* @param date
* @return
*/
public static String getDD(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, DD);
return dateStr;
}
/**
* 获取当前日期 小时 HH
*
* @return
*/
public static String getHour() {
return formatDate(getDate(), HH);
}
/**
* 获取当前日期 分钟 mm
*
* @return
*/
public static String getMinute() {
return formatDate(getDate(), MI);
}
/**
* 获取当前日期 秒 ss
*
* @return
*/
public static String getSecond() {
return formatDate(getDate(), SS);
}
/**
* 获取指定日期 小时 HH
*
* @param time
* @return
*/
public static String getHour(Date time) {
String timeStr = "";
if (time != null)
timeStr = formatDate(time, HH);
return timeStr;
}
/**
* 获取指定日期 分钟 mm
*
* @param time
* @return
*/
public static String getMinute(Date time) {
String timeStr = "";
if (time != null)
timeStr = formatDate(time, MI);
return timeStr;
}
/**
* 获取指定日期 秒 ss
*
* @param time
* @return
*/
public static String getSecond(Date time) {
String timeStr = "";
if (time != null)
timeStr = formatDate(time, SS);
return timeStr;
}
/**
* 计算从beginDate到endDate的工作日,休息日,自然日(例如要查2个月之间的工作日和休息日)
* ————work_rest_all("2009-03-01", "2009-04-01");
*
* @param beginDate
* 开始时间(包括——如果开始时间为null,默认开始时间为现在)
* @param endDate
* 结束时间(不包括)
* @return [0]工作日,[1]休息日,[2]自然日——总天数
* @throws ParseException
*/
public static int[] work_rest_all(String beginDate, String endDate)
throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 代表自然日(一天就代表一个自然日)
int natureDay = 0;
// 代表休息日,假定周六周日休息
int restDay = 0;
// 如果开始时间为空,则为当前日期
Calendar now = Calendar.getInstance();
if (beginDate != null) {
try {
now.setTime(sdf.parse(beginDate));
} catch (ParseException e) {
e.printStackTrace();
throw new ParseException("\n"
+ "DateUtils.work_rest_all() was error", 1);
}
}
Calendar end = Calendar.getInstance();
try {
end.setTime(sdf.parse(endDate));
} catch (ParseException e) {
e.printStackTrace();
throw new ParseException("\n"
+ "DateUtils.work_rest_all() was error", 2);
}
String nowStr = sdf.format(now.getTime());
String endStr = sdf.format(end.getTime());
if (now.before(end)) {
while (!nowStr.equals(endStr)) {
if (now.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY
|| now.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
restDay++;
}
natureDay++;
now.add(Calendar.DAY_OF_YEAR, 1);
}
}
int[] result = { natureDay - restDay, restDay, natureDay };
return result;
}
}
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateFilter {
private static final String DATEFORMAT = "yyyy-MM-dd";
private static final String TIMEFORMAT = "HH:mm:ss";
private static final String DATETIMEFORMAT = "yyyy-MM-dd HH:mm:ss";
private static final String YYYY = "yyyy";
private static final String MM = "MM";
private static final String DD = "dd";
private static final String HH = "HH";
private static final String MI = "mm";
private static final String SS = "ss";
/**
* 获取当前日期
*
* @return Date
*/
public static Date getDate() {
return Calendar.getInstance().getTime();
}
/**
* 获取当前日期 格式:yyyy-MM-dd
*
* @return String
*/
public static String getCurrentDate() {
return formatDate(getDate(), DATEFORMAT);
}
/**
* 获取当前时间 格式:HH:mm:ss
*
* @return String
*/
public static String getCurrentTime() {
return formatDate(getDate(), TIMEFORMAT);
}
/**
* 获取当前日期 格式:yyyy-MM-dd HH:mm:ss
*
* @return String
*/
public static String getCurrentDateTime() {
return formatDate(getDate(), DATETIMEFORMAT);
}
/**
* 格式化指定日期
*
* @param date -
* 日期型
* @param formatStr -
* 日期格式化字符串 如:yyyy-MM-dd等
* @return String
*/
public static String formatDate(Date date, String formatStr) {
SimpleDateFormat bdf = new SimpleDateFormat(formatStr);
return bdf.format(date);
}
/**
* 格式化指定日期,格式:yyyy-MM-dd
*
* @param date
* @return
*/
public static String withDateFormat(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, DATEFORMAT);
return dateStr;
}
/**
* 格式化指定时间,格式:HH:mm:ss
*
* @param date
* @return
*/
public static String withTimeFormat(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, TIMEFORMAT);
return dateStr;
}
/**
* 格式化指定日期和时间,格式:yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static String withDateTimeFormat(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, DATETIMEFORMAT);
return dateStr;
}
/**
* 获取几天前的日期
*
* @param dayCount -
* 天数:正数
* @return Date
*/
public static Date getBeforeDayDate(int dayCount) {
Date date = null;
if (dayCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -dayCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几天前的日期 格式:yyyy-MM-dd
*
* @param dayCount -
* 天数:正数
* @return String
*/
public static String getBeforeDayDateStr(int dayCount) {
String dateStr = "";
if (dayCount > 0)
dateStr = formatDate(getBeforeDayDate(dayCount), DATEFORMAT);
return dateStr;
}
/**
* 获取几天后的日期
*
* @param dayCount -
* 天数:正数
* @return Date
*/
public static Date getAfterDayDate(int dayCount) {
Date date = null;
if (dayCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, dayCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几天后的日期 格式:yyyy-MM-dd
*
* @param dayCount -
* 天数:正数
* @return String
*/
public static String getAfterDayDateStr(int dayCount) {
String dateStr = "";
if (dayCount > 0)
dateStr = formatDate(getAfterDayDate(dayCount), DATEFORMAT);
return dateStr;
}
/**
* 获取几个月前的日期
*
* @param monthCount -
* 天数:正数
* @return Date
*/
public static Date getBeforeMonthDate(int monthCount) {
Date date = null;
if (monthCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, -monthCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几个月前的日期 格式:yyyy-MM-dd
*
* @param monthCount -
* 天数:正数
* @return String
*/
public static String getBeforeMonthDateStr(int monthCount) {
String dateStr = "";
if (monthCount > 0)
dateStr = formatDate(getBeforeMonthDate(monthCount), DATEFORMAT);
return dateStr;
}
/**
* 获取几个月后的日期
*
* @param monthCount -
* 天数:正数
* @return Date
*/
public static Date getAfterMonthDate(int monthCount) {
Date date = null;
if (monthCount > 0) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, monthCount);
date = calendar.getTime();
}
return date;
}
/**
* 获取几个月后的日期 格式:yyyy-MM-dd
*
* @param monthCount -
* 天数:正数
* @return String
*/
public static String getAfterMonthDateStr(int monthCount) {
String dateStr = "";
if (monthCount > 0)
dateStr = formatDate(getAfterMonthDate(monthCount), DATEFORMAT);
return dateStr;
}
/**
* 将日期字符串转换成日期型
*
* @param dateStr -
* 日期字符串,格式:yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss。
* 但只格式化日期部分,不格式化时间部分,被置为yyyy-MM-dd 00:00:00
* @return Date
*/
public static Date str2Date(String dateStr) {
Date date = null;
try {
if (!"".equals(dateStr) && null != dateStr) {
date = DateFormat.getDateInstance().parse(dateStr);
}
} catch (ParseException e) {
throw new RuntimeException("日期格式化出错!");
}
return date;
}
/**
* 将时间字符串转换成日期型
*
* @param timeStr -
* 时间字符串,必须是时间格式:HH:mm:ss
* @return Date
*/
public static Date str2Time(String timeStr) {
Date date = null;
try {
if (!"".equals(timeStr) && null != timeStr) {
date = DateFormat.getTimeInstance().parse(timeStr);
}
} catch (ParseException e) {
throw new RuntimeException("时间格式化出错!时间字符串,正确格式:HH:mm:ss。");
}
return date;
}
/**
* 将日期时间字符串转换成日期型
*
* @param dateTimeStr -
* 日期时间字符串,必须是日期时间格式:yyyy-MM-dd HH:mm:ss。
* @return Date
*/
public static Date str2DateTime(String dateTimeStr) {
Date date = null;
try {
if (!"".equals(dateTimeStr) && null != dateTimeStr) {
date = DateFormat.getDateTimeInstance().parse(dateTimeStr);
}
} catch (ParseException e) {
throw new RuntimeException(
"日期格式化出错!日期时间字符串,正确格式:yyyy-MM-dd HH:mm:ss。");
}
return date;
}
/**
* 将日期型转换成日期字符串
*
* @param date -
* 指定日期
* @return String
*/
public static String date2Str(Date date) {
String dateStr = "";
if (date != null)
dateStr = date.toString();
return dateStr;
}
/**
* 将时间字符串转换成时间
*
* @param hour -
* 小时
* @param minute -
* 分钟
* @param second -
* 秒
* @return
*/
public static Date str2Time(int hour, int minute, int second) {
Date time = null;
try {
Calendar cld = Calendar.getInstance();
cld.set(Calendar.HOUR_OF_DAY, hour);
cld.set(Calendar.MINUTE, minute);
cld.set(Calendar.SECOND, second);
time = cld.getTime();
} catch (Exception e) {
throw new RuntimeException("时间格式化出错!");
}
return time;
}
/**
* 计算两个日期之间的天数,(date2 - date1)
*
* @param date1 -
* 日期型
* @param date2 -
* 日期型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static long getDaysFromTwoDate(Date date1, Date date2,
boolean isNegative) {
long days = 0;
long millisecond = date2.getTime() - date1.getTime();
if (!isNegative) {
if (millisecond < 0) {
millisecond = -millisecond;
}
}
days = (millisecond) / (24 * 60 * 60 * 1000);
return days;
}
/**
* 计算两个日期之间的小时差,(date2 - date1)
*
* @param date1 -
* 日期型
* @param date2 -
* 日期型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static double getHourFromTwoDate(Date date1, Date date2,
boolean isNegative) {
double days = 0;
long millisecond = date2.getTime() - date1.getTime();
if (!isNegative) {
if (millisecond < 0) {
millisecond = -millisecond;
}
}
days = (millisecond) / (60d * 60d * 1000d);
DecimalFormat df = new DecimalFormat("#.##");
String str = df.format(days);
return Double.parseDouble(str);
}
/**
* 计算两个日期之间的小时差
*
* @param hour1
* @param minute1
* @param second1
* @param hour2
* @param minute2
* @param second2
* @param isNegative -
* 是否可以返回负数
* @return
*/
public static double getHourFromTwoDate(int hour1, int minute1,
int second1, int hour2, int minute2, int second2, boolean isNegative) {
double minutes = 0;
try {
Calendar cld = Calendar.getInstance();
cld.set(Calendar.HOUR_OF_DAY, hour1);
cld.set(Calendar.MINUTE, minute1);
cld.set(Calendar.SECOND, second1);
Date time1 = cld.getTime();
Calendar cld2 = Calendar.getInstance();
cld2.set(Calendar.HOUR_OF_DAY, hour2);
cld2.set(Calendar.MINUTE, minute2);
cld2.set(Calendar.SECOND, second2);
Date time2 = cld2.getTime();
minutes = getHourFromTwoDate(time1, time2, isNegative);
} catch (Exception e) {
throw new RuntimeException("时间格式化出错!");
}
return minutes;
}
/**
* 计算两个日期之间的天数,(dateStr2 - dateStr1)
*
* @param dateStr1 -
* 字符串型
* @param dateStr2 -
* 字符串型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static long getDaysFromTwoDate(String dateStr1, String dateStr2,
boolean isNegative) {
return getDaysFromTwoDate(str2Date(dateStr1), str2Date(dateStr2),
isNegative);
}
/**
* 计算两个日期之间的天数,(date - dateStr)
*
* @param dateStr -
* 字符串型
* @param date -
* 日期型
* @param isNegative -
* 是否可以返回负数
* @return long
*/
public static long getDaysFromTwoDate(String dateStr, Date date,
boolean isNegative) {
return getDaysFromTwoDate(str2Date(dateStr), date, isNegative);
}
/**
* 判断是否是上午
*
* @param dateTime
* @return
*/
public static boolean isAM(Date dateTime) {
Calendar cld = Calendar.getInstance();
cld.setTime(dateTime);
int hour = cld.get(Calendar.HOUR_OF_DAY);
if (hour >= 0 && hour < 12) {
return true;
}
return false;
}
/**
* 判断是否是上午
*
* @param hour
* @return
*/
public static boolean isAM(int hour) {
if (hour >= 0 && hour < 12) {
return true;
}
return false;
}
/**
* 判断是否是下午
*
* @param dateTime
* @return
*/
public static boolean isPM(Date dateTime) {
Calendar cld = Calendar.getInstance();
cld.setTime(dateTime);
int hour = cld.get(Calendar.HOUR_OF_DAY);
if (hour >= 12 && hour < 24) {
return true;
}
return false;
}
/**
* 判断是否是下午
*
* @param hour
* @return
*/
public static boolean isPM(int hour) {
if (hour >= 12 && hour < 24) {
return true;
}
return false;
}
/**
* 获取当前日期 4位年
*
* @return
*/
public static String getYYYY() {
return formatDate(getDate(), YYYY);
}
/**
* 获取当前日期 月份
*
* @return
*/
public static String getMM() {
return formatDate(getDate(), MM);
}
/**
* 获取当前日期 天
*
* @return
*/
public static String getDD() {
return formatDate(getDate(), DD);
}
/**
* 获取指定日期 4位年
*
* @param date
* @return
*/
public static String getYYYY(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, YYYY);
return dateStr;
}
/**
* 获取指定日期 月份
*
* @param date
* @return
*/
public static String getMM(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, MM);
return dateStr;
}
/**
* 获取指定日期 天
*
* @param date
* @return
*/
public static String getDD(Date date) {
String dateStr = "";
if (date != null)
dateStr = formatDate(date, DD);
return dateStr;
}
/**
* 获取当前日期 小时 HH
*
* @return
*/
public static String getHour() {
return formatDate(getDate(), HH);
}
/**
* 获取当前日期 分钟 mm
*
* @return
*/
public static String getMinute() {
return formatDate(getDate(), MI);
}
/**
* 获取当前日期 秒 ss
*
* @return
*/
public static String getSecond() {
return formatDate(getDate(), SS);
}
/**
* 获取指定日期 小时 HH
*
* @param time
* @return
*/
public static String getHour(Date time) {
String timeStr = "";
if (time != null)
timeStr = formatDate(time, HH);
return timeStr;
}
/**
* 获取指定日期 分钟 mm
*
* @param time
* @return
*/
public static String getMinute(Date time) {
String timeStr = "";
if (time != null)
timeStr = formatDate(time, MI);
return timeStr;
}
/**
* 获取指定日期 秒 ss
*
* @param time
* @return
*/
public static String getSecond(Date time) {
String timeStr = "";
if (time != null)
timeStr = formatDate(time, SS);
return timeStr;
}
/**
* 计算从beginDate到endDate的工作日,休息日,自然日(例如要查2个月之间的工作日和休息日)
* ————work_rest_all("2009-03-01", "2009-04-01");
*
* @param beginDate
* 开始时间(包括——如果开始时间为null,默认开始时间为现在)
* @param endDate
* 结束时间(不包括)
* @return [0]工作日,[1]休息日,[2]自然日——总天数
* @throws ParseException
*/
public static int[] work_rest_all(String beginDate, String endDate)
throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 代表自然日(一天就代表一个自然日)
int natureDay = 0;
// 代表休息日,假定周六周日休息
int restDay = 0;
// 如果开始时间为空,则为当前日期
Calendar now = Calendar.getInstance();
if (beginDate != null) {
try {
now.setTime(sdf.parse(beginDate));
} catch (ParseException e) {
e.printStackTrace();
throw new ParseException("\n"
+ "DateUtils.work_rest_all() was error", 1);
}
}
Calendar end = Calendar.getInstance();
try {
end.setTime(sdf.parse(endDate));
} catch (ParseException e) {
e.printStackTrace();
throw new ParseException("\n"
+ "DateUtils.work_rest_all() was error", 2);
}
String nowStr = sdf.format(now.getTime());
String endStr = sdf.format(end.getTime());
if (now.before(end)) {
while (!nowStr.equals(endStr)) {
if (now.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY
|| now.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
restDay++;
}
natureDay++;
now.add(Calendar.DAY_OF_YEAR, 1);
}
}
int[] result = { natureDay - restDay, restDay, natureDay };
return result;
}
}
相关推荐
date-filter用于筛选当前时间到之前指定的范围内的日志内容的小工具,支持对php慢查询日志等多行日志文件的筛选。tail -n 20000 /var/log/nginx/access.log \ | date-filter -layout '... 标签:datefilter
本篇文章将详细探讨Java中的日期操作接口,特别是围绕"Java日期操作接口"这个主题,以及与之相关的`DateFilter.java`文件。 首先,Java中最基础的日期类是`java.util.Date`。这个类自Java 1.0起就存在,但它的设计...
只需使用DateFilter类而不是Filter use R64 \ Filters \ DateFilter ; class DateFrom extends DateFilter { // } 客制化 由于日期过滤器不再是一个选择,因此我们可以使用options方法来传递日期选择器配置 use R...
在`Comment`实体类中添加新的`@ApiFilter`注解,这次指定过滤器类型为`DateFilter`。 ```php #[ApiResource] #[ApiFilter(SearchFilter::class, properties: [ 'message' => 'partial', 'post.id' => 'exact'...
- Date Filter:针对日期数据,可以设定日期范围。 - List Filter:从预定义的列表中选择值进行过滤。 - Boolean Filter:用于布尔值,通常为是/否选项。 2. **过滤模式**: - Local Filtering:过滤操作在...
### Relative Date Filter 实现 `angular-relative-date` 过滤器的核心功能是计算两个日期之间的差异,并以人性化的方式显示。这涉及到以下几个关键点: 1. **日期计算**:首先,需要获取当前时间与目标日期之间的...
filter filter = new DateFilter(fielddate, datetime.parse("2005-10-1"), datetime.parse("2005-10-30")); hits hits = searcher.search(query, filter); ``` 在上面的代码中,我们使用DateFilter来过滤搜索结果...
例如,`PriceFilter`用于处理价格范围筛选,`DateFilter`处理日期范围筛选。 3. **Middleware**:中间件可以用来接收和解析请求中的过滤参数,然后传递给Filter Builder来构建查询。 4. **Service Provider**:...
这个配置文件首先从指定目录下的.log文件中读取数据,然后使用grok filter解析日志格式,接着用date filter解析时间戳,最后将处理后的数据发送到本地Elasticsearch实例的索引中。 在实际应用中,Logstash通常与...
例如,grok filter 可以解析复杂格式的日志,date filter 用于标准化时间戳,mutate filter 可以修改字段值等。8.10.4 版本可能会包含新的过滤器或现有过滤器的增强功能,以满足更广泛的日志处理需求。 3. **输出...
date filter可以将时间戳转换为标准格式;geoip filter可以解析IP地址,获取地理位置信息。 3. 输出插件:处理后的数据将通过输出插件发送到各种目的地,如Elasticsearch用于存储和搜索,Kafka用于消息队列,或者...
过滤阶段可以实现丰富的数据处理,如grok filter用于解析日志格式,date filter用于识别和标准化时间戳,mutate filter用于修改字段值,还有ruby filter允许用户编写自定义的Ruby代码进行复杂处理。 7. **输出数据...
例如,grok filter用于模式匹配日志条目,date filter用于解析时间戳,而geoip filter则可以识别日志中的IP地址并将其转换为地理位置信息。 3. **输出插件 (Output Plugins)**:输出插件负责将处理过的数据发送到...
例如,grok filter用于从杂乱的日志文本中提取结构化数据,date filter则可以解析时间戳字段。 - 输出插件:输出插件决定了数据的去向,如Elasticsearch用于存储和搜索数据,或者stdout输出到控制台进行调试。Kafka...
date filter 可以将时间戳字段转换为标准格式;mutate filter 则用于修改或删除事件中的字段。 3. 输出阶段:处理后的数据可以被发送到各种目标,包括 Elasticsearch、Kafka、数据库、文件系统等。6.8.0 版本的 ...
date filter 可以识别并标准化时间戳;mutate filter 可以修改字段值。这些过滤步骤有助于提高日志数据的质量,使其更利于后续分析。 **数据加载与Elasticsearch集成**: 处理和过滤后的日志数据将通过输出插件...
例如,grok filter可以解析复杂格式的日志,mutate filter可以修改字段值,date filter可以解析时间戳等。 - **输出插件**:输出插件将处理后的数据发送到各种目标,如Elasticsearch(用于搜索和分析)、Kafka...
例如,grok filter可以解析复杂日志格式,date filter则能帮助将时间戳字段转换为标准格式。 3. **输出插件(Output Plugins)**:输出插件将处理后的数据发送到目标位置,如Elasticsearch、Kafka、HTTP服务器等。...
2. 数据过滤:收集到的数据可以经过一系列过滤器进行处理,例如,grok filter用于解析和提取日志中的特定字段,mutate filter用于修改字段值,date filter用于识别和转换时间戳格式。 3. 数据输出:处理后的数据会...
- 过滤插件:这些插件用于处理和转换接收到的数据,例如,grok filter 用于解析日志格式,mutate filter 用于修改字段值,date filter 用于解析时间戳等。 - 输出插件:输出插件将处理后的数据发送到目的地,...