`

DateFilter

    博客分类:
  • java
阅读更多
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;
}

}
分享到:
评论

相关推荐

    日志内容按日期筛选工具date-filter.zip

    date-filter用于筛选当前时间到之前指定的范围内的日志内容的小工具,支持对php慢查询日志等多行日志文件的筛选。tail -n 20000 /var/log/nginx/access.log \  | date-filter -layout '... 标签:datefilter

    Java日期操作接口

    本篇文章将详细探讨Java中的日期操作接口,特别是围绕"Java日期操作接口"这个主题,以及与之相关的`DateFilter.java`文件。 首先,Java中最基础的日期类是`java.util.Date`。这个类自Java 1.0起就存在,但它的设计...

    nova-date-filter:Laravel Nova日期过滤器

    只需使用DateFilter类而不是Filter use R64 \ Filters \ DateFilter ; class DateFrom extends DateFilter { // } 客制化 由于日期过滤器不再是一个选择,因此我们可以使用options方法来传递日期选择器配置 use R...

    118、API资源过滤器1

    在`Comment`实体类中添加新的`@ApiFilter`注解,这次指定过滤器类型为`DateFilter`。 ```php #[ApiResource] #[ApiFilter(SearchFilter::class, properties: [ 'message' =&gt; 'partial', 'post.id' =&gt; 'exact'...

    Ext grid filter

    - Date Filter:针对日期数据,可以设定日期范围。 - List Filter:从预定义的列表中选择值进行过滤。 - Boolean Filter:用于布尔值,通常为是/否选项。 2. **过滤模式**: - Local Filtering:过滤操作在...

    前端项目-angular-relative-date.zip

    ### Relative Date Filter 实现 `angular-relative-date` 过滤器的核心功能是计算两个日期之间的差异,并以人性化的方式显示。这涉及到以下几个关键点: 1. **日期计算**:首先,需要获取当前时间与目标日期之间的...

    lucene部分常用代码

    filter filter = new DateFilter(fielddate, datetime.parse("2005-10-1"), datetime.parse("2005-10-30")); hits hits = searcher.search(query, filter); ``` 在上面的代码中,我们使用DateFilter来过滤搜索结果...

    Laravel开发-laravel-dynamic-filter

    例如,`PriceFilter`用于处理价格范围筛选,`DateFilter`处理日期范围筛选。 3. **Middleware**:中间件可以用来接收和解析请求中的过滤参数,然后传递给Filter Builder来构建查询。 4. **Service Provider**:...

    logstash-7.16.2-windows-x86-64版

    这个配置文件首先从指定目录下的.log文件中读取数据,然后使用grok filter解析日志格式,接着用date filter解析时间戳,最后将处理后的数据发送到本地Elasticsearch实例的索引中。 在实际应用中,Logstash通常与...

    logstash-8.10.4-windows-x86_64.zip

    例如,grok filter 可以解析复杂格式的日志,date filter 用于标准化时间戳,mutate filter 可以修改字段值等。8.10.4 版本可能会包含新的过滤器或现有过滤器的增强功能,以满足更广泛的日志处理需求。 3. **输出...

    archive_ Logstash日志管理系统 v7.17.9 [江西新余电信].zip.zip

    date filter可以将时间戳转换为标准格式;geoip filter可以解析IP地址,获取地理位置信息。 3. 输出插件:处理后的数据将通过输出插件发送到各种目的地,如Elasticsearch用于存储和搜索,Kafka用于消息队列,或者...

    最新版linux logstash-7.17.6-linux-x86_64.tar.gz

    过滤阶段可以实现丰富的数据处理,如grok filter用于解析日志格式,date filter用于识别和标准化时间戳,mutate filter用于修改字段值,还有ruby filter允许用户编写自定义的Ruby代码进行复杂处理。 7. **输出数据...

    最新版lnux logstash-8.2.2-linux-x86_64.tar.gz

    例如,grok filter用于模式匹配日志条目,date filter用于解析时间戳,而geoip filter则可以识别日志中的IP地址并将其转换为地理位置信息。 3. **输出插件 (Output Plugins)**:输出插件负责将处理过的数据发送到...

    最新版linux logstash-7.17.1-linux-x86_64.tar.gz

    例如,grok filter用于从杂乱的日志文本中提取结构化数据,date filter则可以解析时间戳字段。 - 输出插件:输出插件决定了数据的去向,如Elasticsearch用于存储和搜索数据,或者stdout输出到控制台进行调试。Kafka...

    logstash-6.8.0.tar.gz

    date filter 可以将时间戳字段转换为标准格式;mutate filter 则用于修改或删除事件中的字段。 3. 输出阶段:处理后的数据可以被发送到各种目标,包括 Elasticsearch、Kafka、数据库、文件系统等。6.8.0 版本的 ...

    logstash-7.1.1.zip

    date filter 可以识别并标准化时间戳;mutate filter 可以修改字段值。这些过滤步骤有助于提高日志数据的质量,使其更利于后续分析。 **数据加载与Elasticsearch集成**: 处理和过滤后的日志数据将通过输出插件...

    Logstash-传输和处理您的日志、事件或其他数据_akirataguchi115_Java_下载.zip

    例如,grok filter可以解析复杂格式的日志,mutate filter可以修改字段值,date filter可以解析时间戳等。 - **输出插件**:输出插件将处理后的数据发送到各种目标,如Elasticsearch(用于搜索和分析)、Kafka...

    最新版windows logstash-7.15.0-windows-x86_64.zip

    例如,grok filter可以解析复杂日志格式,date filter则能帮助将时间戳字段转换为标准格式。 3. **输出插件(Output Plugins)**:输出插件将处理后的数据发送到目标位置,如Elasticsearch、Kafka、HTTP服务器等。...

    最新版linux logstash-7.13.1-linux-x86_64.tar.gz

    2. 数据过滤:收集到的数据可以经过一系列过滤器进行处理,例如,grok filter用于解析和提取日志中的特定字段,mutate filter用于修改字段值,date filter用于识别和转换时间戳格式。 3. 数据输出:处理后的数据会...

    elk部署需要的工具logstash

    - 过滤插件:这些插件用于处理和转换接收到的数据,例如,grok filter 用于解析日志格式,mutate filter 用于修改字段值,date filter 用于解析时间戳等。 - 输出插件:输出插件将处理后的数据发送到目的地,...

Global site tag (gtag.js) - Google Analytics