公司有个需求要判断某些文件是不是当月当日或者当年填报的,所以写个工具类方便一下自己
Java工具类:判断日期是否是今天,本周,本月,本季度,本年
package com.bmsoft.smart.utils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class FindDateStatusUtil {
public static boolean isThisWeek(Date time) {
Calendar calendar = Calendar.getInstance();
int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
calendar.setTime(time);
int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);
if (paramWeek == currentWeek) {
return true;
return false;
public static boolean isToday(Date time) {
return isThisTime(time, "yyyy-MM-dd");
public static boolean isThisMonth(Date time) {
return isThisTime(time, "yyyy-MM");
public static boolean isThisYear(Date time) {
return isThisTime(time, "yyyy");
public static boolean isThisQuarter(Date time) {
Date QuarterStart = getCurrentQuarterStartTime();
Date QuarterEnd = getCurrentQuarterEndTime();
return time.after(QuarterStart) && time.before(QuarterEnd);
private static boolean isThisTime(Date time, String pattern) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String param = sdf.format(time);
String now = sdf.format(new Date());
if (param.equals(now)) {
return true;
return false;
* 获得季度开始时间
* @return
public static Date getCurrentQuarterStartTime() {
Calendar c = Calendar.getInstance();
int currentMonth = c.get(Calendar.MONTH) + 1;
SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = null;
try {
if (currentMonth >= 1 && currentMonth <= 3)
c.set(Calendar.MONTH, 0);
else if (currentMonth >= 4 && currentMonth <= 6)
c.set(Calendar.MONTH, 3);
else if (currentMonth >= 7 && currentMonth <= 9)
c.set(Calendar.MONTH, 4);
else if (currentMonth >= 10 && currentMonth <= 12)
c.set(Calendar.MONTH, 9);
c.set(Calendar.DATE, 1);
now = longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00");
} catch (Exception e) {
e.printStackTrace();
return now;
* 当前季度的结束时间
* @return
public static Date getCurrentQuarterEndTime() {
Calendar cal = Calendar.getInstance();
cal.setTime(getCurrentQuarterStartTime());
cal.add(Calendar.MONTH, 3);
return cal.getTime();
Java工具类:判断日期是否是今天,本周,本月,本季度,本年package com.bmsoft.smart.utils;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class FindDateStatusUtil { //判断选择的日期是否是本周 public static boolean isThisWeek(Date time) {
import java.text.SimpleDateFormat;
public class test {
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
simpleDateFormat.setLenien
Java 判断是否为今天, 判断是否为过去的日期, 判断是否为将来的日期判断是否为今天判断是否为过去的日期判断是否为将来的日期
判断是否为今天
* 判断是否为今天
* @param
* "yyyy-MM-dd"
public static boolean isToday(final String dateStr) {
import java.util.Scanner;
public class DateTest {
public static void main(String[] args) {
Scanne
public class SJ4 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
System.out.println("请输入1-12任意一个月份: ");
int month= input.nextInt();
switch (month) {
case 1:
CREATE OR REPLACE PROCEDURE show_date_info (p_date IN DATE) IS
v_weekday VARCHAR2(10);
v_day_of_month NUMBER;
v_days_to_month_end NUMBER;
v_days_to_year_end NUMBER;
BEGIN
-- 获取星期几
SELECT TO_CHAR(p_date, 'DAY') INTO v_weekday FROM DUAL;
-- 获取本月的第几天
SELECT EXTRACT(DAY FROM p_date) INTO v_day_of_month FROM DUAL;
-- 获取距离月末还有几天
SELECT LAST_DAY(p_date) - p_date INTO v_days_to_month_end FROM DUAL;
-- 获取距离本年最后一天还有几天
SELECT TO_DATE('31-DEC-' || TO_CHAR(p_date, 'YYYY'), 'DD-MON-YYYY') - p_date INTO v_days_to_year_end FROM DUAL;
-- 输出结果
DBMS_OUTPUT.PUT_LINE('日期:' || TO_CHAR(p_date, 'YYYY-MM-DD'));
DBMS_OUTPUT.PUT_LINE('星期几:' || v_weekday);
DBMS_OUTPUT.PUT_LINE('本月的第几天:' || v_day_of_month);
DBMS_OUTPUT.PUT_LINE('距离月末还有几天:' || v_days_to_month_end);
DBMS_OUTPUT.PUT_LINE('距离本年最后一天还有几天:' || v_days_to_year_end);
使用方法:
EXEC show_date_info(TO_DATE('2022-01-01', 'YYYY-MM-DD'));
输出结果:
日期:2022-01-01
星期几:SATURDAY
本月的第几天:1
距离月末还有几天:30
距离本年最后一天还有几天:364