- 浏览: 185714 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (228)
- 链接数据库 (1)
- Linux下面安装tomcat步骤 (1)
- 数据库简单添加索引 (1)
- Ubuntu 16.04安装jdk步骤 (1)
- Ubuntu 16.04安装mysql链接工具workbench (1)
- Java基础 (1)
- Java 获取两个时间的时间查 如 1 天 2 小时 30 分钟 (1)
- jdbc链接增删该查 (1)
- springboot 跨域解决 (1)
- springboot如何读取配置文件(application.yml)中的属性值 (1)
- springboot配置redis (1)
- 数据库访问优化法则 (1)
- springboot 配置定时任务 (1)
- 使用Spring Boot上传文件 (1)
- Java并发编程:Callable、Future和FutureTask (1)
- springboot配置所有信息demo (1)
- 常用软件地址 (1)
- Java DateUtil时间大全 (1)
- Java DateUtil当天,本周,本月时间获取方法 (1)
- @Data的用法 (1)
- 身份证工具类 (1)
- springboot添加日志 (1)
- List集合中的对象按照某个字段去重实现 (1)
- JavaBean和Map转换封装类 (1)
- StringUtils工具类用法 (1)
- BigDecimal用户详情 (1)
- java常用集合总结 (1)
- openfile 插件开发步骤 (0)
- Linux rpc客户端步骤 (1)
- Java开发必会的Linux命令 (1)
- springboot配置拦截器,控制登录跳转 (1)
- springboot 异步调用的方法 (0)
- springboot如何读取配置文件test.properties (1)
- springboot 异步调用的方法 (1)
- HttpClient操作,HttpPost (1)
- HttpGet (1)
- HttpDelete (1)
- HttpPut (1)
- mybatis生成代码后,想用自己的关联查询demo (1)
- Arrays工具类十大常用方法 (1)
- 如何生成唯一订单号 (1)
- 订单号唯一性 (1)
- msyql lest的用法 (1)
- //循环递归删除 (0)
- 循环递归删除 (1)
- java 属性首字母大写返回json解决办法 (1)
- 根据两点间经纬度坐标(double值),计算两点间距离,单位为米 (1)
- 运用开发好的jar部署到linux服务中 (1)
- mybatis批量新增 (1)
- mybatis 增删该查demo,新手必看 (1)
- java中字符串查找一个字符串的个数几种方法 (1)
- @Select in 的用法 (1)
- Ubuntu 16.04使用ieda简单配置 (1)
- 统计一个字符串中相应字符出现的次数 (1)
- SimpleDateFormat同步的解决办法 (1)
- gradle打包springboot jar例子 (1)
- java 提取字符串中的数字 (1)
- springboot 对像异常处理,还可以作为全部异常处理 (1)
- 面试题 (0)
- Linux下面安装virtualBox (1)
- java带有效期的map (1)
- 2018年JAVA基础面试题和高级面试题总结 (1)
- mysql修改密码的方法 (1)
- 排名前 16 的 Java 工具类 (1)
- 最完整的Linux常用命令大全 (1)
- Mysql 开发标准规范 (1)
- idea 快捷键 (1)
- mysql 建立索引 (1)
- Java中判断字符串是否为数字的五种方法 (1)
- springboot集成redis (1)
- springboot异步调用demo (1)
- springboot2集成redis (1)
- springboot2集成Elasticsearch (1)
- java过滤敏感字体的方式 (1)
- 对象的值赋给另一个对象 (1)
- mybitse+pagehelper 的使用方法 (1)
- java时间的处理 (1)
- xshell5 下载地址 (1)
- springboot2集成Excel (1)
- 检查数组是否包含某个值的方法 (1)
- 关于Java代码优化的N条建议! (1)
- Java Map按Key值进行排序 (1)
- List进行排序 (1)
- Stream 完整实例 (1)
- StringUtils isNoneBlank和isAnyBlank——demo (1)
- vim最全常用命令 (1)
- JWT生成Token (1)
- 学习参看地址 (1)
- java初始化数据 (1)
- 简单json (1)
- 数据库脚本 (1)
- restTemplate http请求 (1)
- 学习网站 (1)
- JsonUtil (1)
- Rsa (1)
- BeanUtils的赋值方法比较 (1)
- HttpClientUtil (2)
- ValidUtils (0)
- 读取excel,批量插入库demo (1)
- springboot对redis封装使用 (1)
- java后端简答验证码 (1)
- java高级面试题及其答案 (1)
- 序列换成json时 (1)
- 将所有的long变成string (1)
- ControllerAdvice (0)
- RedisService 工具类 (1)
- Java常用正则表达式验证工具类RegexUtils (1)
- CollectionUtil (1)
- thrift使用 (1)
- springboot播客学习 (1)
- mybitse 批量更新 (1)
- https://www.cnblogs.com/cxiaocai/p/11715874.html (1)
- elasticsearch安装及其head步骤 (0)
- elasticsearch7.6.2安装及其head、kibana、ik分词器步骤 (0)
- elasticsearch7.6.2集成springboot (0)
- gradle仓库选址 (1)
- elasticsearch7.6.2集成springboot2.2.6---2 (1)
- elasticsearch7.6.2安装及其head、kibana、ik分词器步骤-----1 (1)
- elasticsearch7.6.2集成springboot2.2.6基本语法---3 (1)
- Jsoup (1)
- elasticsearch7.6.2集成springboot2.2.6----demo (1)
- mybatis官网地址 (1)
- springboot发送邮件到qq (1)
- navicat Premium 链接sql Server的方法 (1)
- 简单开发springboot搭建 (1)
- sqlServer 查询两个小时的sql语句 (1)
- BigDecimalUtil (1)
- 雪花算法生成id (1)
- JsonUtils (1)
- Spring Boot监控与管理的实现 (1)
- springboot 使用undertow启动,替换tomcat (1)
- RedisConfig配置使用 (1)
- RedisUtil (1)
- easypoi读取excel (1)
- easyexcel读取excel (0)
- easyexcel读取excel与下载 (1)
- 生成指定长度的随机数 (1)
- Spring Boot AOP实战 (1)
- fastjsonfastjson新手必看 (1)
- 获取IP地址 (1)
- CommonUtils (1)
- 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载 (1)
- DateUtils 最新工具类 (1)
- screw的使用 (1)
- 15000 字的 SQL 语句大全 (1)
- hutool (1)
- PdfToWord (1)
- MySQL修改最大连接数 (1)
- MAP排序 (1)
- 归纳从文件中读取数据的六种方法-JAVA IO基础总结 (1)
- 天气 (1)
- Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案 (1)
- 全网最全编程学习网站汇总来了,还不赶快收藏 (1)
- win10 (0)
- 电脑知识 (0)
- util工具类 (1)
- ieda提示mapper报错 (1)
- zysnba (1)
- 自增方式 (1)
- mybits链表查询 (1)
- SpringBoot如何优雅的处理校验参数 (1)
- 参考记录 (1)
- 企业微信封装方法 (1)
- 二维码 (1)
- mysql简单创建索引 (1)
- msyql函数 (1)
- mybitse-plus多表查询demo (1)
- git 提交本地代码步骤 (1)
- gradle5.X以上lombok引入 (1)
- SpringBoot定时任务及Cron表达式详解 (1)
- Hutool工具集之DateUtil(日期时间工具)详解使用 (1)
- 对象属性为空字符串变成null (1)
- DateUtils 工具类 (0)
- face++照片不对工具类 (1)
- 判断某个值是否在list集合中的某个对象中存在 (1)
- mybatisplus时间更新操作 (1)
- Java8 List通用方法处理总结 (1)
- 阿斯蒂芬 (0)
- springboot多数据源配置 (0)
- MyBatis和MyBatis-Plus 官网地址 (1)
- jwt (0)
- java---ValidUtils (1)
- Java之下载网络图片到本地文件夹 (1)
- 初始化内容数据 (1)
- springboot启动指定端口和启动环境 (1)
- 根据生日计算年龄 (1)
- idea快捷键大全 (1)
- springboot数据验证例子 (1)
- springboot文章 (1)
- 获取当前时间,推迟一年 (0)
- 获取当前时间,推迟一周 推迟一年示例 (1)
- ResultBean返回对象 (1)
- SpringBoot注解最全详解 (1)
- JeecgBoot (1)
- 电脑优化 (0)
- 简单数据队列 (1)
- CacheUtil换成工具类 (0)
- CacheUtil缓存工具类 (0)
- xml和对象互转 (0)
- 导出word (0)
- 企业微信通过code获取用户基本信息 (1)
- Java开发中的一些小技巧 (1)
- 判断当前时间是否在一个时间区间例如8点:21点 (1)
- springboot 启动指定环境 (1)
- 打印springboot启动的环境 (1)
- 根据时间日期获取当天是周几 (1)
- LocalDateTimeToString (1)
- java导出word (1)
- java 对xml和对象互转 (1)
- java CacheUtil缓存工具类 (1)
- 史上最牛逼电脑优化,让电脑飞起来 (1)
- isEmpty 和 isBlank 的用法区别 (1)
- 根据图片url地址获取其流InputStream (1)
- springboot解决LocalDateTime (1)
- springboot配置文件list映射 (1)
- SpringBoot中必须掌握的45个注解 (1)
- sql 优化的 15 个小技巧 (1)
- Cron表达式 (1)
- 数据库创建时间和修改时间默认值 (1)
- 小程序解析手机号 (1)
- 小程序获取手机号 (0)
- java 获取resource下面的文件路径,springboot打成jar也可以使用 (1)
- 数据库字段不显示对象和swwager前段不显示 (1)
- java生成pdf (1)
- springboot 异步调用 (1)
- java获取时间段内的每一天 (1)
- hutool----DateUtil简单的时间 (1)
- java 8两个List集合取交集、并集、差集、去重并集 (1)
- 服务调用demo (1)
- hutool导入excel (1)
- hutool导出 (1)
- 切面日志 (1)
- 校验参数为空 (1)
- 两个集合对象某一个属性相匹配 (1)
- JAVA stream流详细教程 (1)
- 查看java进程的命令 (1)
- Java 保留两位小数 百分数 (1)
- freemarker读写word模板生成word文档 (1)
- springboot项目中,读取 resources 目录下的文件的9种方式 (1)
- Knife4j (1)
- Java8 获取两个List交集 (1)
- list泛型和list对象交集 (1)
- 未来7天过生日的孩子sql (1)
- 数据校验,全局异常 (1)
- 获取最近10天过生日的sql (1)
- 随机数 (1)
- Java获取两个日期的天数打印 (1)
- 通过时间获取星期几 (1)
- Java时间类型相互转化 (2)
- 小程序登录 (1)
- 手机号 (0)
- sse调用 (0)
- httpsse调用 (1)
- 初始延迟3秒执行任务 (0)
最新评论
package com.xxx;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class CountDate {
private static transient int gregorianCutoverYear = 1582;
public static void main(String[] args) {
//
// List<String> everyday = getEveryday("2023-12-12", "2029-12-31");
// System.out.println(everyday);
System.out.println(getWeek("2023-12-18"));
}
public static int getWeek(String strDay){
int i = DateUtil.dayOfWeek(DateUtil.parse(strDay));
if(i==1){
i=7;
}else{
i=i-1;
}
return i;
}
/**
* 闰年中每月天数
*/
private static final int[] DAYS_P_MONTH_LY = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/**
* 非闰年中每月天数
*/
private static final int[] DAYS_P_MONTH_CY = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/**
* 代表数组里的年、月、日
*/
private static final int Y = 0, M = 1, D = 2;
/**
* 将代表日期的字符串分割为代表年月日的整形数组
*
* @param date
* @return
*/
public static Integer[] splitYMD(String date) {
date = date.replace("-", "");
Integer[] ymd = {0, 0, 0};
ymd[Y] = Integer.parseInt(date.substring(0, 4));
ymd[M] = Integer.parseInt(date.substring(4, 6));
ymd[D] = Integer.parseInt(date.substring(6,);
return ymd;
}
/**
* 将代表日期的字符串分割为代表年月的整形数组
*
* @param date
* @return
*/
public static Integer[] splitYM(String date) {
date = date.replace("-", "");
Integer[] ym = {0, 0, 0};
ym[Y] = Integer.parseInt(date.substring(0, 4));
ym[M] = Integer.parseInt(date.substring(4, 6));
return ym;
}
/**
* 检查传入的参数代表的年份是否为闰年
*
* @param year
* @return
*/
public static boolean isLeapYear(int year) {
return year >= gregorianCutoverYear ? ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))) : (year % 4 == 0);
}
/**
* 日期加1天
*
* @param year
* @param month
* @param day
* @return
*/
private static Integer[] addOneDay(int year, int month, int day) {
if (isLeapYear(year)) {
day++;
if (day > DAYS_P_MONTH_LY[month - 1]) {
month++;
if (month > 12) {
year++;
month = 1;
}
day = 1;
}
} else {
day++;
if (day > DAYS_P_MONTH_CY[month - 1]) {
month++;
if (month > 12) {
year++;
month = 1;
}
day = 1;
}
}
Integer[] ymd = {year, month, day};
return ymd;
}
/**
* 将不足两位的月份或日期补足为两位
*
* @param decimal
* @return
*/
public static String formatMonthDay(int decimal) {
DecimalFormat df = new DecimalFormat("00");
return df.format(decimal);
}
/**
* 将不足四位的年份补足为四位
*
* @param decimal
* @return
*/
public static String formatYear(int decimal) {
DecimalFormat df = new DecimalFormat("0000");
return df.format(decimal);
}
/**
* 计算两个日期之间相隔的天数
*
* @param begin
* @param end
* @return
* @throws ParseException
*/
public static long countDay(String begin, String end) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate, endDate;
long day = 0;
try {
beginDate = format.parse(begin);
endDate = format.parse(end);
day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
} catch (ParseException e) {
e.printStackTrace();
}
return day;
}
/**
* 计算两个月份 相差多少个月 yyyy-MM
* @param date1
* @param date2
* @return
* @throws ParseException
*/
public static int getMonthSpace(String date1, String date2)
throws ParseException {
int result = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(sdf.parse(date1));
c2.setTime(sdf.parse(date2));
result = c2.get(Calendar.MONDAY) - c1.get(Calendar.MONTH);
return result == 0 ? 1 : Math.abs(result);
}
/**
* 以循环的方式计算日期 格式 YYYY-MM-dd
*
* @param beginDate
* @param endDate
* @return
*/
public static List<String> getEveryday(String beginDate, String endDate) {
long days = countDay(beginDate, endDate);
Integer[] ymd = splitYMD(beginDate);
List<String> everyDays = new ArrayList<String>();
everyDays.add(beginDate);
for (int i = 0; i < days; i++) {
ymd = addOneDay(ymd[Y], ymd[M], ymd[D]);
everyDays.add(formatYear(ymd[Y]) + "-" + formatMonthDay(ymd[M]) + "-" + formatMonthDay(ymd[D]));
}
return everyDays;
}
/**
* 以循环的方式计算日期 格式 YYYYMMdd
*
* @param beginDate
* @param endDate
* @return
*/
public static List<String> getEverydayList(String beginDate, String endDate) {
long days = countDay(beginDate, endDate);
Integer[] ymd = splitYMD(beginDate);
List<String> everyDays = new ArrayList<String>();
everyDays.add(formatYear(ymd[Y]) + formatMonthDay(ymd[M]) + formatMonthDay(ymd[D]));
for (int i = 0; i < days - 1; i++) {
ymd = addOneDay(ymd[Y], ymd[M], ymd[D]);
everyDays.add(formatYear(ymd[Y]) + formatMonthDay(ymd[M]) + formatMonthDay(ymd[D]));
}
return everyDays;
}
/**
* 计算日期内所有月份
*
* @param beginDate
* @param endDate
* @return
*/
public static List<String> getEveryMonth(String beginDate, String endDate) {
Date start = null;
Date end = null;
try {
start = new SimpleDateFormat("yyyy-MM").parse(beginDate);
end = new SimpleDateFormat("yyyy-MM").parse(endDate);
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
calendar.add(Calendar.MONTH, 1);
// 获取开始年份和开始月份
int startYear = calendar.get(Calendar.YEAR);
int startMonth = calendar.get(Calendar.MONTH);
// 获取结束年份和结束月份
Calendar cal = Calendar.getInstance();
cal.setTime(end);
cal.add(Calendar.MONTH, 1);
int endYear = cal.get(Calendar.YEAR);
int endMonth = cal.get(Calendar.MONTH);
//
List<String> list = new ArrayList<String>();
for (int i = startYear; i <= endYear; i++) {
String date = "";
if (startYear == endYear) {
for (int j = startMonth; j < endMonth - 1; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
} else {
if (i == startYear) {
for (int j = startMonth; j < 11; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
} else if (i == endYear) {
for (int j = 0; j < endMonth - 1; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
} else {
for (int j = 0; j < 11; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
}
}
}
return list;
}
/**
* @param time 支持 2017-01的时间字符串格式
* @return
*/
public static String[] getLast12Months(String time) {
//处理月份输入条件
if (time.length() == 7) {
time = time + "-01 06:00:00";
} else if (time.length() == 110) {
time = time.substring(0, 7) + "-01 06:00:00";
}
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
date = sdf.parse(time);
} catch (Exception e) {
return null;
}
String[] last12Months = new String[12];
Calendar cal = Calendar.getInstance();
//设置输入条件时间
cal.setTime(date);
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1); //要先+1,才能把本月的算进去
for (int i = 0; i < 12; i++) {
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); //逐次往前推1个月
last12Months[11 - i] = cal.get(Calendar.YEAR) + addZeroForNum(String.valueOf(cal.get(Calendar.MONTH) + 1), 2);
}
return last12Months;
}
public static String addZeroForNum(String str, int strLength) {
int strLen = str.length();
if (strLen < strLength) {
while (strLen < strLength) {
StringBuffer sb = new StringBuffer();
sb.append("0").append(str);// 左补0
// sb.append(str).append("0");//右补0
str = sb.toString();
strLen = str.length();
}
}
return str;
}
/**
* 获取当前时间往前往后n的日期
* eg: date ==null 默认是系统当前时间 否则以date为时间起点
* n > 0 往后
* n = 0 当前时间
* n < 0 往前
*
* @param date
* @param n
* @return
* @author zhangheng5@lenovo.com
*/
public static List<String> getBeforeDate(String date, int n) {
DateTime dateTime = DateUtil.parseDate(date);
List<String> list = new ArrayList<>();
Calendar c = Calendar.getInstance();
Date today = new Date();
if (null != dateTime) {
today = dateTime;
}
c.setTime(today);
if (n > 0) {
for (int i = 0; i <= n; i++) {
c.add(Calendar.DATE, i - 1);
list.add(new SimpleDateFormat("yyyyMMdd").format(c.getTime()));
c.setTime(today);
}
} else if (n < 0) {
for (int i = n; i <= 0; i++) {
c.add(Calendar.DATE, i);
list.add(new SimpleDateFormat("yyyyMMdd").format(c.getTime()));
c.setTime(today);
}
} else {
c.add(Calendar.DATE, 1);
list.add(new SimpleDateFormat("yyyyMMdd").format(c.getTime()));
c.setTime(today);
}
return list;
}
/**
* 拆分年月日
* YEARN年
* MONTH月
* DAYANDMONTH 带日的或者不带日的月分
*
* @return
*/
public static int splitDate(String dateType, String oldDate) {
int i = 0;
if (StringUtils.equals(dateType, "YEAR")) {
i = NumberUtil.parseInt(oldDate.substring(0, 4));
}
if (StringUtils.equals(dateType, "MONTH")) {
String substring = oldDate.substring(oldDate.length() - 4);
i = NumberUtil.parseInt(substring.substring(0, 2));
}
if (StringUtils.equals(dateType, "DAYANDMONTH")) {
i = NumberUtil.parseInt(oldDate.substring(oldDate.length() - 2));
}
return i;
}
/* public static void main(String[] args) {
List<String> list = CountDate.getEveryday("2020-08-29", "2022-09-02");
for (String result : list) {
System.out.println(result);
}
}*/
/**
* 校验时间格式
*
* @param type
* @param timeStamp
* @return
*/
public static boolean checkDateFormat(String type, String timeStamp) {
SimpleDateFormat format;
boolean dateflag = true;
if (StringUtils.equals(type, "MONTH")) {
format = new SimpleDateFormat("yyyy-MM");
} else {
format = new SimpleDateFormat("yyyy-MM-dd");
}
try {
format.setLenient(false);
format.parse(timeStamp.intern());
} catch (Exception e) {
dateflag = false;
}
if (!dateflag || type.equals("MONTH") ? timeStamp.length() > 7 : timeStamp.length() > 10) {
dateflag = false;
}
return dateflag;
}
/**
* 获取传入时间的 起点时间 和终点时间
*
* @param MONTH
* @return
*/
public static Map<String, Object> getDateDifference(String MONTH) {
String newMonth = MONTH.substring(0, 4) + "-" + MONTH.substring(MONTH.length() - 2);
Map<String, Object> resuleMap = new HashMap<>();
//指定时间往前
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
Calendar oldCal = Calendar.getInstance();
String endTime, startTime;
if (StringUtils.isBlank(newMonth)) {
if (1 == cal.get(Calendar.DAY_OF_MONTH)) { //第一天展示上月整月数据
endTime = sdf.format(cal.getTime()) + "-01 06:00:00";
oldCal.setTime(date);
oldCal.add(Calendar.MONTH, -1);
startTime = sdf.format(oldCal.getTime()) + "-01 06:00:00";
} else {
//当前月
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
endTime = format.format(cal.getTime()) + " 06:00:00";
oldCal.setTime(date);
startTime = sdf.format(oldCal.getTime()) + "-01 06:00:00";
}
} else {
startTime = newMonth + "-01 06:00:00";
String[] str = newMonth.split("-");
if (Integer.valueOf(str[1]) == 12) {
endTime = (Integer.valueOf(str[0]) + 1) + "-01-01 06:00:00";
} else {
endTime = str[0] + "-" + (Integer.valueOf(str[1]) + 1) + "-01 06:00:00";
}
}
resuleMap.put("startTime", startTime);
resuleMap.put("endTime", endTime);
return resuleMap;
}
/**
* 获取当前天数时间差
*
* @return
*/
public static long getDateTimesDay(String newMonth) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String year = newMonth.substring(0, 4);
String month = newMonth.substring(newMonth.length() - 2);
String cDate = year + "-" + month;
DateTime date = DateUtil.date();
String olddater = date.toString().substring(0, 7);
if (cDate.equals(olddater)) {
Date startDate = format.parse(cDate + "-01 06:00:00");
Date endDate = format.parse(date.toString().substring(0, 10) + " 06:00:00");
long count = DateUtil.between(startDate, endDate, DateUnit.DAY);
return count;
} else {
return 30;
}
}
/**
* @param time 第几天
* @param
* @return java.lang.String
* @description:获取当前日期前 多少 天
* @author: yc
* @date: 2022-08-11 13:30:49
*/
public static List<String> getLastDays(String dateTime, int time) {
String[] strings = dateTime.split("-");
List<String> frontDaysList = new ArrayList<String>();
for (int i = 0; i < time; i++) {
Calendar calendar = Calendar.getInstance();
calendar.set(NumberUtils.toInt(strings[0]),NumberUtils.toInt(strings[1])-1,NumberUtils.toInt(strings[2]));
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - i);
Date today = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
frontDaysList.add(format.format(today));
}
Collections.reverse(frontDaysList);
return frontDaysList;
}
/**
* 获取指定时间 前 多少 月的日期集合
* @param dateTime
* @param size
* @return
*/
public static List<String> getLastMonths(String dateTime, int size) {
String[] strings = dateTime.split("-");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar c = Calendar.getInstance();
c.set(NumberUtils.toInt(strings[0]), NumberUtils.toInt(strings[1]), 1);
List<String> list = new ArrayList(size);
for (int i = 0; i < size; i++) {
//c.setTime(new Date());
c.add(Calendar.MONTH, -1);
Date m = c.getTime();
list.add(sdf.format(m));
}
Collections.reverse(list);
return list;
}
}
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class CountDate {
private static transient int gregorianCutoverYear = 1582;
public static void main(String[] args) {
//
// List<String> everyday = getEveryday("2023-12-12", "2029-12-31");
// System.out.println(everyday);
System.out.println(getWeek("2023-12-18"));
}
public static int getWeek(String strDay){
int i = DateUtil.dayOfWeek(DateUtil.parse(strDay));
if(i==1){
i=7;
}else{
i=i-1;
}
return i;
}
/**
* 闰年中每月天数
*/
private static final int[] DAYS_P_MONTH_LY = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/**
* 非闰年中每月天数
*/
private static final int[] DAYS_P_MONTH_CY = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/**
* 代表数组里的年、月、日
*/
private static final int Y = 0, M = 1, D = 2;
/**
* 将代表日期的字符串分割为代表年月日的整形数组
*
* @param date
* @return
*/
public static Integer[] splitYMD(String date) {
date = date.replace("-", "");
Integer[] ymd = {0, 0, 0};
ymd[Y] = Integer.parseInt(date.substring(0, 4));
ymd[M] = Integer.parseInt(date.substring(4, 6));
ymd[D] = Integer.parseInt(date.substring(6,);
return ymd;
}
/**
* 将代表日期的字符串分割为代表年月的整形数组
*
* @param date
* @return
*/
public static Integer[] splitYM(String date) {
date = date.replace("-", "");
Integer[] ym = {0, 0, 0};
ym[Y] = Integer.parseInt(date.substring(0, 4));
ym[M] = Integer.parseInt(date.substring(4, 6));
return ym;
}
/**
* 检查传入的参数代表的年份是否为闰年
*
* @param year
* @return
*/
public static boolean isLeapYear(int year) {
return year >= gregorianCutoverYear ? ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))) : (year % 4 == 0);
}
/**
* 日期加1天
*
* @param year
* @param month
* @param day
* @return
*/
private static Integer[] addOneDay(int year, int month, int day) {
if (isLeapYear(year)) {
day++;
if (day > DAYS_P_MONTH_LY[month - 1]) {
month++;
if (month > 12) {
year++;
month = 1;
}
day = 1;
}
} else {
day++;
if (day > DAYS_P_MONTH_CY[month - 1]) {
month++;
if (month > 12) {
year++;
month = 1;
}
day = 1;
}
}
Integer[] ymd = {year, month, day};
return ymd;
}
/**
* 将不足两位的月份或日期补足为两位
*
* @param decimal
* @return
*/
public static String formatMonthDay(int decimal) {
DecimalFormat df = new DecimalFormat("00");
return df.format(decimal);
}
/**
* 将不足四位的年份补足为四位
*
* @param decimal
* @return
*/
public static String formatYear(int decimal) {
DecimalFormat df = new DecimalFormat("0000");
return df.format(decimal);
}
/**
* 计算两个日期之间相隔的天数
*
* @param begin
* @param end
* @return
* @throws ParseException
*/
public static long countDay(String begin, String end) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date beginDate, endDate;
long day = 0;
try {
beginDate = format.parse(begin);
endDate = format.parse(end);
day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);
} catch (ParseException e) {
e.printStackTrace();
}
return day;
}
/**
* 计算两个月份 相差多少个月 yyyy-MM
* @param date1
* @param date2
* @return
* @throws ParseException
*/
public static int getMonthSpace(String date1, String date2)
throws ParseException {
int result = 0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(sdf.parse(date1));
c2.setTime(sdf.parse(date2));
result = c2.get(Calendar.MONDAY) - c1.get(Calendar.MONTH);
return result == 0 ? 1 : Math.abs(result);
}
/**
* 以循环的方式计算日期 格式 YYYY-MM-dd
*
* @param beginDate
* @param endDate
* @return
*/
public static List<String> getEveryday(String beginDate, String endDate) {
long days = countDay(beginDate, endDate);
Integer[] ymd = splitYMD(beginDate);
List<String> everyDays = new ArrayList<String>();
everyDays.add(beginDate);
for (int i = 0; i < days; i++) {
ymd = addOneDay(ymd[Y], ymd[M], ymd[D]);
everyDays.add(formatYear(ymd[Y]) + "-" + formatMonthDay(ymd[M]) + "-" + formatMonthDay(ymd[D]));
}
return everyDays;
}
/**
* 以循环的方式计算日期 格式 YYYYMMdd
*
* @param beginDate
* @param endDate
* @return
*/
public static List<String> getEverydayList(String beginDate, String endDate) {
long days = countDay(beginDate, endDate);
Integer[] ymd = splitYMD(beginDate);
List<String> everyDays = new ArrayList<String>();
everyDays.add(formatYear(ymd[Y]) + formatMonthDay(ymd[M]) + formatMonthDay(ymd[D]));
for (int i = 0; i < days - 1; i++) {
ymd = addOneDay(ymd[Y], ymd[M], ymd[D]);
everyDays.add(formatYear(ymd[Y]) + formatMonthDay(ymd[M]) + formatMonthDay(ymd[D]));
}
return everyDays;
}
/**
* 计算日期内所有月份
*
* @param beginDate
* @param endDate
* @return
*/
public static List<String> getEveryMonth(String beginDate, String endDate) {
Date start = null;
Date end = null;
try {
start = new SimpleDateFormat("yyyy-MM").parse(beginDate);
end = new SimpleDateFormat("yyyy-MM").parse(endDate);
} catch (Exception e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
calendar.add(Calendar.MONTH, 1);
// 获取开始年份和开始月份
int startYear = calendar.get(Calendar.YEAR);
int startMonth = calendar.get(Calendar.MONTH);
// 获取结束年份和结束月份
Calendar cal = Calendar.getInstance();
cal.setTime(end);
cal.add(Calendar.MONTH, 1);
int endYear = cal.get(Calendar.YEAR);
int endMonth = cal.get(Calendar.MONTH);
//
List<String> list = new ArrayList<String>();
for (int i = startYear; i <= endYear; i++) {
String date = "";
if (startYear == endYear) {
for (int j = startMonth; j < endMonth - 1; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
} else {
if (i == startYear) {
for (int j = startMonth; j < 11; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
} else if (i == endYear) {
for (int j = 0; j < endMonth - 1; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
} else {
for (int j = 0; j < 11; j++) {
if (j < 9) {
date = i + "0" + (j + 1);
} else {
date = i + "" + (j + 1);
}
list.add(date);
}
}
}
}
return list;
}
/**
* @param time 支持 2017-01的时间字符串格式
* @return
*/
public static String[] getLast12Months(String time) {
//处理月份输入条件
if (time.length() == 7) {
time = time + "-01 06:00:00";
} else if (time.length() == 110) {
time = time.substring(0, 7) + "-01 06:00:00";
}
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
date = sdf.parse(time);
} catch (Exception e) {
return null;
}
String[] last12Months = new String[12];
Calendar cal = Calendar.getInstance();
//设置输入条件时间
cal.setTime(date);
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1); //要先+1,才能把本月的算进去
for (int i = 0; i < 12; i++) {
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1); //逐次往前推1个月
last12Months[11 - i] = cal.get(Calendar.YEAR) + addZeroForNum(String.valueOf(cal.get(Calendar.MONTH) + 1), 2);
}
return last12Months;
}
public static String addZeroForNum(String str, int strLength) {
int strLen = str.length();
if (strLen < strLength) {
while (strLen < strLength) {
StringBuffer sb = new StringBuffer();
sb.append("0").append(str);// 左补0
// sb.append(str).append("0");//右补0
str = sb.toString();
strLen = str.length();
}
}
return str;
}
/**
* 获取当前时间往前往后n的日期
* eg: date ==null 默认是系统当前时间 否则以date为时间起点
* n > 0 往后
* n = 0 当前时间
* n < 0 往前
*
* @param date
* @param n
* @return
* @author zhangheng5@lenovo.com
*/
public static List<String> getBeforeDate(String date, int n) {
DateTime dateTime = DateUtil.parseDate(date);
List<String> list = new ArrayList<>();
Calendar c = Calendar.getInstance();
Date today = new Date();
if (null != dateTime) {
today = dateTime;
}
c.setTime(today);
if (n > 0) {
for (int i = 0; i <= n; i++) {
c.add(Calendar.DATE, i - 1);
list.add(new SimpleDateFormat("yyyyMMdd").format(c.getTime()));
c.setTime(today);
}
} else if (n < 0) {
for (int i = n; i <= 0; i++) {
c.add(Calendar.DATE, i);
list.add(new SimpleDateFormat("yyyyMMdd").format(c.getTime()));
c.setTime(today);
}
} else {
c.add(Calendar.DATE, 1);
list.add(new SimpleDateFormat("yyyyMMdd").format(c.getTime()));
c.setTime(today);
}
return list;
}
/**
* 拆分年月日
* YEARN年
* MONTH月
* DAYANDMONTH 带日的或者不带日的月分
*
* @return
*/
public static int splitDate(String dateType, String oldDate) {
int i = 0;
if (StringUtils.equals(dateType, "YEAR")) {
i = NumberUtil.parseInt(oldDate.substring(0, 4));
}
if (StringUtils.equals(dateType, "MONTH")) {
String substring = oldDate.substring(oldDate.length() - 4);
i = NumberUtil.parseInt(substring.substring(0, 2));
}
if (StringUtils.equals(dateType, "DAYANDMONTH")) {
i = NumberUtil.parseInt(oldDate.substring(oldDate.length() - 2));
}
return i;
}
/* public static void main(String[] args) {
List<String> list = CountDate.getEveryday("2020-08-29", "2022-09-02");
for (String result : list) {
System.out.println(result);
}
}*/
/**
* 校验时间格式
*
* @param type
* @param timeStamp
* @return
*/
public static boolean checkDateFormat(String type, String timeStamp) {
SimpleDateFormat format;
boolean dateflag = true;
if (StringUtils.equals(type, "MONTH")) {
format = new SimpleDateFormat("yyyy-MM");
} else {
format = new SimpleDateFormat("yyyy-MM-dd");
}
try {
format.setLenient(false);
format.parse(timeStamp.intern());
} catch (Exception e) {
dateflag = false;
}
if (!dateflag || type.equals("MONTH") ? timeStamp.length() > 7 : timeStamp.length() > 10) {
dateflag = false;
}
return dateflag;
}
/**
* 获取传入时间的 起点时间 和终点时间
*
* @param MONTH
* @return
*/
public static Map<String, Object> getDateDifference(String MONTH) {
String newMonth = MONTH.substring(0, 4) + "-" + MONTH.substring(MONTH.length() - 2);
Map<String, Object> resuleMap = new HashMap<>();
//指定时间往前
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
Calendar oldCal = Calendar.getInstance();
String endTime, startTime;
if (StringUtils.isBlank(newMonth)) {
if (1 == cal.get(Calendar.DAY_OF_MONTH)) { //第一天展示上月整月数据
endTime = sdf.format(cal.getTime()) + "-01 06:00:00";
oldCal.setTime(date);
oldCal.add(Calendar.MONTH, -1);
startTime = sdf.format(oldCal.getTime()) + "-01 06:00:00";
} else {
//当前月
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
endTime = format.format(cal.getTime()) + " 06:00:00";
oldCal.setTime(date);
startTime = sdf.format(oldCal.getTime()) + "-01 06:00:00";
}
} else {
startTime = newMonth + "-01 06:00:00";
String[] str = newMonth.split("-");
if (Integer.valueOf(str[1]) == 12) {
endTime = (Integer.valueOf(str[0]) + 1) + "-01-01 06:00:00";
} else {
endTime = str[0] + "-" + (Integer.valueOf(str[1]) + 1) + "-01 06:00:00";
}
}
resuleMap.put("startTime", startTime);
resuleMap.put("endTime", endTime);
return resuleMap;
}
/**
* 获取当前天数时间差
*
* @return
*/
public static long getDateTimesDay(String newMonth) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String year = newMonth.substring(0, 4);
String month = newMonth.substring(newMonth.length() - 2);
String cDate = year + "-" + month;
DateTime date = DateUtil.date();
String olddater = date.toString().substring(0, 7);
if (cDate.equals(olddater)) {
Date startDate = format.parse(cDate + "-01 06:00:00");
Date endDate = format.parse(date.toString().substring(0, 10) + " 06:00:00");
long count = DateUtil.between(startDate, endDate, DateUnit.DAY);
return count;
} else {
return 30;
}
}
/**
* @param time 第几天
* @param
* @return java.lang.String
* @description:获取当前日期前 多少 天
* @author: yc
* @date: 2022-08-11 13:30:49
*/
public static List<String> getLastDays(String dateTime, int time) {
String[] strings = dateTime.split("-");
List<String> frontDaysList = new ArrayList<String>();
for (int i = 0; i < time; i++) {
Calendar calendar = Calendar.getInstance();
calendar.set(NumberUtils.toInt(strings[0]),NumberUtils.toInt(strings[1])-1,NumberUtils.toInt(strings[2]));
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - i);
Date today = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
frontDaysList.add(format.format(today));
}
Collections.reverse(frontDaysList);
return frontDaysList;
}
/**
* 获取指定时间 前 多少 月的日期集合
* @param dateTime
* @param size
* @return
*/
public static List<String> getLastMonths(String dateTime, int size) {
String[] strings = dateTime.split("-");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
Calendar c = Calendar.getInstance();
c.set(NumberUtils.toInt(strings[0]), NumberUtils.toInt(strings[1]), 1);
List<String> list = new ArrayList(size);
for (int i = 0; i < size; i++) {
//c.setTime(new Date());
c.add(Calendar.MONTH, -1);
Date m = c.getTime();
list.add(sdf.format(m));
}
Collections.reverse(list);
return list;
}
}
相关推荐
1. 通过`JOptionPane`类获取用户输入的两个日期以及向前或向后推进的天数。 2. 创建`DateType`对象并调用其方法进行日期的比较、天数差计算以及日期的调整。 3. 输出结果。 #### 3.1 输入输出 - **输入**:使用`...
无论是使用JavaScript还是Java来计算两个日期之间的天数差,核心思想都是将日期转换为毫秒数,然后计算两者之间的差值,最后将毫秒数转换为天数。这两种语言虽然语法有所不同,但实现逻辑非常相似。掌握这种方法对于...
### Java中计算两个日期相差几天 在Java编程中,经常需要处理与日期和时间相关的操作。其中一项常见的需求就是计算两个日期之间的差距。本篇文章将详细介绍如何在Java中计算两个日期相差几天,并深入探讨示例代码中...
标题中提到的知识点是“获取指定两个日期之间的所有日期”。在编程中,特别是使用Java语言时,这样的需求非常普遍,尤其是在数据库操作、日志记录、报表生成等场景中经常需要计算两个日期间的天数或者日期列表。 ...
在Android编程中,计算两个日期之间的天数以及打印这些日期是一项常见的任务,这涉及到日期时间的处理和转换。本文将详细讲解如何实现这一功能,并解释其中的关键知识点。 首先,我们注意到一个重要的细节,即在...
下面我们将详细讨论这两个核心知识点。 1. **Java Calendar类** `Calendar`是Java中的一个抽象类,提供了日期和时间的计算方法。它是一个通用的日历模型,可以处理各种日历系统,如公历、伊斯兰历等。要创建一个`...
- 计算两个日期之间的天数差。 - 获取上个月或下个月的天数。 通过以上分析,我们不仅了解了如何使用 JavaScript 来获取当前月份的天数,还掌握了一种通用的日期处理技巧。这将有助于我们在实际项目中更高效地进行...
// 计算两个日期之间的天数差 long daysBetween = ChronoUnit.DAYS.between(date1, date2); // 格式化日期并打印 String formattedDate = date.format(DateTimeFormatter.ISO_DATE); System.out.println...
- 计算两个日期之间的天数差。 - 获取某个日期前后的日期。 - 计算某个月份有多少天。 2. **国际化与本地化**: - 不同国家和地区有不同的日期格式标准。 - 如何设置`SimpleDateFormat`以适应不同地区的日期格式...
- 时间计算:计算两个日期之间的天数、小时数等。 通过这些DEMO,你可以更直观地了解Java在时间处理方面的功能,并在实际项目中灵活应用。记住,理解和熟练掌握这些知识点对于提升Java编程能力至关重要,因为时间...
[工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt [工具类] MD5超强化版 .java.txt [工具类] XML 实用工具类 .java...
此外,还可以增加功能,如计算两个日期之间的天数,或者添加节假日信息等。 通过以上步骤,我们可以创建一个简单的Java程序,根据用户输入打印出带有标记特定日期的日历。这个程序对于理解和掌握Java日期时间处理...
3. **日期操作**:计算两个`LocalDate`对象之间的天数差值,可以使用`ChronoUnit.DAYS.between(date1, date2)`方法,它返回两个日期之间的全时间段以天为单位。 4. **异常处理**:在处理用户输入时,需要考虑异常...
[工具类] Java中计算任意两个日期之间的工作天数 .java.txt [工具类] java抓取网页 .java.txt [工具类] MD5 .java.txt [工具类] MD5强化版 .java.txt [工具类] MD5超强化版 .java.txt [工具类] XML 实用工具类 .java...
例如,如果起始月份是1月,则加上两个月以获得该季度的最后一个月(即3月)。 - 类似地,对于结束月份,同样通过调整月份值来确定其所在的季度。 #### 4. **结果列表构建** - 创建一个`List`来存储最终的季度日期...
- **计算两个日期之间的天数**: ```java SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date = myFormatter.parse("2003-05-1"); java.util.Date mydate = myFormatter....
在这个例子中,我们使用了`SimpleDateFormat`来解析字符串表示的日期,并计算两个日期之间的天数差。 ### java.util.Calendar类 `java.util.Calendar`是一个抽象类,提供了日期时间操作的一些方法。它是一个更复杂...
最后,计算两个日期相差的天数,可以通过直接相减`Calendar`对象或者使用`java.time`包中的`ChronoUnit.DAYS.between()`方法。前者需要先将两个`Calendar`对象设置到同一时区,然后比较它们的`time`字段;后者则是...
在提供的代码中,可以看到一个简单的示例,展示了如何利用`java.util`和`java.text`包中的类来获取并格式化当前日期和时间,以及计算两个日期之间的差值。以下是对这些知识点的详细说明: 1. **`java.util.Date`类*...