技术标签: java
传入时间区间,获取轴
直接上 代码
。
public class DateUtil {
// 当然入参也可以换成localdate、date等类型,出参也可以换成月-日等
private static final DateTimeFormatter format = DateTimeFormatter.ofPattern("MM/dd");
/**
* 获取day1到day2的周间隔
* @return
*/
public static List<String> getWeekSection(LocalDateTime day1, LocalDateTime day2) {
List<String> list = new ArrayList<>();
Calendar start = Calendar.getInstance();
start.setMinimalDaysInFirstWeek(4);//设置一年第一周归属
start.setTime(Date.from(day1.atZone(ZoneId.systemDefault()).toInstant()));
start.setFirstDayOfWeek(Calendar.MONDAY);
start.set(Calendar.DAY_OF_WEEK, start.getFirstDayOfWeek());
Calendar end = Calendar.getInstance();
end.setMinimalDaysInFirstWeek(4);//设置一年第一周归属
end.setTime(Date.from(day2.atZone(ZoneId.systemDefault()).toInstant()));
end.setFirstDayOfWeek(Calendar.MONDAY);
end.set(Calendar.DAY_OF_WEEK, end.getFirstDayOfWeek() + 6);
while (!start.after(end)){
//该年该周
String yearWeek = start.get(Calendar.YEAR)+"/"+start.get(Calendar.WEEK_OF_YEAR);
//该周开始日期
LocalDateTime sectionStart = LocalDateTime.ofInstant(start.getTime().toInstant(), ZoneId.systemDefault());
//该周结束日期
start.add(Calendar.DAY_OF_MONTH, 6);
LocalDateTime sectionEnd = LocalDateTime.ofInstant(start.getTime().toInstant(), ZoneId.systemDefault());
list.add(yearWeek);
//下一周
start.add(Calendar.DAY_OF_MONTH, 1);
}
return list;
}
/**
* 获取day1到day2的间隔7天周期
* @return
*/
public static List<String> getWeekSection2(LocalDateTime day1, LocalDateTime day2) {
List<String> list = new ArrayList<>();
Calendar start = Calendar.getInstance();
start.setMinimalDaysInFirstWeek(4);//设置一年第一周归属
start.setTime(Date.from(day1.atZone(ZoneId.systemDefault()).toInstant()));
start.setFirstDayOfWeek(Calendar.MONDAY);
start.set(Calendar.DAY_OF_WEEK, start.getFirstDayOfWeek());
Calendar end = Calendar.getInstance();
end.setMinimalDaysInFirstWeek(4);//设置一年第一周归属
end.setTime(Date.from(day2.atZone(ZoneId.systemDefault()).toInstant()));
end.setFirstDayOfWeek(Calendar.MONDAY);
end.set(Calendar.DAY_OF_WEEK, end.getFirstDayOfWeek() + 6);
while (!start.after(end)){
//该周开始日期
LocalDateTime sectionStart = LocalDateTime.ofInstant(start.getTime().toInstant(), ZoneId.systemDefault());
//该周结束日期
start.add(Calendar.DAY_OF_MONTH, 6);
LocalDateTime sectionEnd = LocalDateTime.ofInstant(start.getTime().toInstant(), ZoneId.systemDefault());
String startStr = format.format(sectionStart);
//设置出参
String endStr = format.format(sectionEnd);
list.add(startStr+"-"+endStr);
//下一周
start.add(Calendar.DAY_OF_MONTH, 1);
}
return list;
}
/**
* 获取day1到day2的间隔
* @return
*/
public static List<String> getDaySection(LocalDateTime day1, LocalDateTime day2) {
//出参
List<String> list = new ArrayList<>();
//localDateTime转date
ZoneId zone = ZoneId.systemDefault();
Instant instant1 = day1.atZone(zone).toInstant();
Date date1 = Date.from(instant1);
Instant instant2 = day2.atZone(zone).toInstant();
Date date2 = Date.from(instant2);
Calendar start = Calendar.getInstance();
start.setTime(date1);
Calendar end = Calendar.getInstance();
end.setTime(date2);
while (!start.after(end)){
String year = start.get(Calendar.YEAR) + "";
String month = (((start.get(Calendar.MONTH) + 1) < 10 ?"0":"") + (start.get(Calendar.MONTH) + 1));
String day = ((start.get(Calendar.DATE) < 10 ?"0":"") + start.get(Calendar.DATE));
list.add(year + "/" + month + "/" + day);
start.add(Calendar.DATE,1);
}
return list;
}
/**
* 获取day1到day2的月间隔
* @return
*/
public static List<String> getMonthSection(LocalDateTime day1, LocalDateTime day2) {
//出参
List<String> list = new ArrayList<>();
//localDateTime转date
ZoneId zone = ZoneId.systemDefault();
Instant instant1 = day1.atZone(zone).toInstant();
Date date1 = Date.from(instant1);
Instant instant2 = day2.atZone(zone).toInstant();
Date date2 = Date.from(instant2);
Calendar start = Calendar.getInstance();
start.setTime(date1);
Calendar end = Calendar.getInstance();
end.setTime(date2);
while (!start.after(end)){
String month = (((start.get(Calendar.MONTH) + 1) < 10 ?"0":"") + (start.get(Calendar.MONTH) + 1));
String time = start.get(Calendar.YEAR) + "/" + month;
list.add(time);
start.add(Calendar.MONTH,1);
}
return list;
}
public static void main(String[] args) {
//测试一下
// DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// LocalDateTime ldt = LocalDateTime.parse("2021-02-12 00:00:00",df);
// System.out.println(getDaySection(ldt,LocalDateTime.now()));
// DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// LocalDateTime ldt = LocalDateTime.parse("2021-02-12 00:00:00",df);
// System.out.println(getMonthSection(ldt,LocalDateTime.now()));
//
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime ldt1 = LocalDateTime.parse("2021-12-20 00:00:00",df);
LocalDateTime ldt2 = LocalDateTime.parse("2022-01-30 23:59:59",df);
System.out.println(getWeekSection(ldt1,ldt2));
}
}
微信公众号关注:计算机的这些事或点击链接 :word下载转载于:https://www.cnblogs.com/huijixuan/p/10833178.html_已完成office配置,需关注微信公众号
场景开发网站的时候,有些页面在后台SQL查询时间比较慢(比如需要集成多个表的数据),如果页面内容不常变化,那么能否设置页面缓存,让用户访问的时候能直接显示已经查询过的数据,快速显示页面?Java生态里就有这一个产品ehcache, 可以做到缓存的功能. 那么它如何集成进JFinal框架里?说明集成ehcache步骤:1.1 在项目maven文件pom.xml里增加ehcache的依赖, 注意目前jfinal只支持2.x版本的ehcache.<dependency> _jfinal ehcache
1.1 什么是Cocos2D大家认识并且熟悉Cocos2D,应该是从App Store上几款非常火爆的游戏开始的,但是实际上Cocos2D引擎最早并非是为iOS(iPhone Operating System,苹果移动设备操作系统)设计的。最早它是一款用Python语言开发的游戏引擎,后来使用Objective-C被移植为iOS平台的Cocos2D- ...
C语言的tricks不多,但大多比较晦涩,就跟数学一样需要循序渐进的理解,同时也需要对编译器、C语言标准都有一定的理解。而C语言的雷区较多,也即有很多我们经常碰到的未定义行为(undefined behavior)。在看tricks前,我们先看个雷:C1a
一、安装vue.js1.简介Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。Vue.js 的目标是通过尽可能简单的 AP...
先来CRM系统结构图:每个模块作用介绍如下:1、营销管理营销机会管理:针对企业中客户的质询需求所建立的信息录入功能,方便销售人员进行后续的客户需求跟踪与联系,提高企业客户购买产品的几率。营销开发计划:开发计划是根据营销机会而来,对于企业质询的客户,对应会有相应的销售人员对于该客户进行具体的沟通交流,此时对于整个crm 系统而言,通过营销开发计划来进行相应的信息管理,提高客户的购买企业产品的可能性。..._基于java的crm客户管理系统介绍模板
思路一:暴力(超时)用一个函数专门判断是否是回文,然后枚举所有子串,不断更新max_len复杂度n^3,双循环n*n,判断回文nclass Solution: # 暴力匹配(超时) def longestPalindrome(self, s: str) -> str: # 特判 size = len(s) if size < 2: return s max_len = 1 .
为什么可以说Java语言是准动态语言?2017年02月24日 19:36:58Young丶阅读数:1122版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/agonie201218/article/details/56851844什么是动态语言? 动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除...
C++学习笔记之运算符重载(赋值运算符,关系运算符重载)C++运算符重载 运算符重载 重载运算符赋值运算符重载C++编译器至少要给一个类添加4个函数默认构造函数默认析构函数默认拷贝构造函数赋值运算符 operator=对属性进行值拷贝如果类中有属性指向堆区,做赋值操作的时候会出现深浅拷贝的问题应该要先判断是否有属性在堆区,如果要先释放干净,然后再进行深拷贝if(m_Age != NULL){delete m_Age;m_Age = NULL;}#include <io_进行赋值运算符重载的时候为什么要判断是否有属性在堆区
这个可以作为CCmenu的一个item,和CCMenuItemSprite一起使用不同的是,CCMenuItemToggle在点击之后,可以变化图片CCSprite* pauseNormalSprite1 = [CCSprite spriteWithSpriteFrame:[cacheCommon spriteFrameByName:@"pause.png"]];CCSprite*
封装一个Canvas 实现文字转图片的接口,图片大小根据文字长度生成,可指定字体填充颜色和边框颜色,接口返回图片宽高和图片base64编码内容。_canvas文字转图片
渗透测试流程拿到一个待测网站,你感觉应该怎么做?第一步:信息收集前端语言、后端语言、中间件、服务器、版本号、开放的端口,真实IP,子目录爬取,注册人信息whois查询,旁站扫描,网站指纹获取(CMS)1.服务器域名的whois信息,包括注册者的邮箱、姓名、电话等2.服务器操作系统的版本、中间件等,是否存在已知漏洞,常见的中间件、操作系统、有。。。3.探测真实IP、开放的端口、网站的指纹、前后端使用的语言等4.旁站扫描、子目录爬取5.google hack 进一步收集网站信息,后台,敏感文件等_讲一下你拿到待测的一个站点你渗透的一个思路