java 常用工具封装日期类
常用的日期类进行封装,避免以后在调用日期的时候在此写该方法那么会导致项目臃肿。
返回当前星期的Map集合
/*
* 返回参数所在星期的七天,如传入'2021-06-02'星期四,则返回所在星期周一到周日的Map
* @param date
* @return Map
* */
public static HashMapString,Date getWeekDates(Date date){
HashMapString,Date dates = new HashMapString,Date();
Calendar c= Calendar.getInstance();
c.setTime(date);
c.setFirstDayOfWeek(Calendar.MONDAY);
int index = c.get(Calendar.DAY_OF_WEEK);
c.add(Calendar.DAY_OF_WEEK,(-1) * (index - 1));
c.add(Calendar.DAY_OF_WEEK,(-1) * (index - 1));
dates.put("MON",c.getTime());
c.add(Calendar.DAY_OF_WEEK,1);
dates.put("TUE",c.getTime());
c.add(Calendar.DAY_OF_WEEK,1);
dates.put("WED",c.getTime());
c.add(Calendar.DAY_OF_WEEK,1);
dates.put("THU",c.getTime());
c.add(Calendar.DAY_OF_WEEK,1);
dates.put("FRI",c.getTime());
c.add(Calendar.DAY_OF_WEEK,1);
dates.put("SAT",c.getTime());
c.add(Calendar.DAY_OF_WEEK,1);
dates.put("SUN",c.getTime());
return dates;
}
/*
* param date
* pram number
* return 几天后的时间日期
* */
public static Date getDateByTaDay(Date date,int number){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_YEAR,number);
Date nextDay = calendar.getTime();
return nextDay;
}
/*
* param date
* param number 几天后的时间日期
* return 几天后的时间日期去除时分秒
* */
public static Date getDateByYID(Date date,int number){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_YEAR,number);
Date nextDay = calendar.getTime();
nextDay.setHours(0);
nextDay.setMonth(0);
nextDay.setSeconds(0);
return nextDay;
}
/*
* @param beforeDate
* @param lastDate
* @param days 间隔天数
* @return 判断两个日期的间隔天数是否超过参数值 超过返回true 未超过返回false
* */
public static boolean checkDistanceDay(Date beforeDate,Date lastDate,int days){
long interval = 0L;
if (beforeDate.before(lastDate)){
interval = lastDate.getTime() - beforeDate.getTime();
}else{
interval = beforeDate.getTime() - lastDate.getTime();
}
int betweenDays = (int)(interval)/(1000 * 60 * 60 * 24);
if (betweenDays days){
return true;
}else{
return false;
}
}
/*
* @param Date
* @return 返回参数日期所在季度,1:第一季度 2:第二季度 3:第三季度 4:第四季度
* */
public static int getQuarter(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);
switch (month){
case 0:
return 1;
case 1:
return 1;
case 2:
return 1;
case 3:
return 2;
case 4:
return 2;
case 5:
return 2;
case 6:
return 3;
case 7:
return 3;
case 8:
return 3;
case 9:
return 4;
case 10:
return 4;
case 11:
return 4;
default:;
}
return -1;
}
/*
* 把分钟转换成小时
* @param mins
* return 小时
* */
public static String formatMinutesHours(Long mins){
if (mins == null || mins.longValue() == 0){
return "0";
}
return (mins / 60 10 "0"+mins / 60 : mins / 60)+":"+ StringUtils.leftPad(""+mins % 60,2,"0");
}
/*
* 删除给定Date的时分秒毫秒
* */
public static Date truncateTimeOfDate(Date now){
if ( null == now){
return null;
}
Calendar day = Calendar.getInstance();
day.setTime(now);
day.set(Calendar.HOUR_OF_DAY,0);
day.set(Calendar.MINUTE,0);
day.set(Calendar.SECOND,0);
day.set(Calendar.MILLISECOND,0);
return day.getTime();
}
/*
* 获取两个日期之间的所有日期
* @param startDate
* @param endDate
* @return
* */
public static ListDate getIntervalDates(Date startDate, Date endDate){
ListDate result = new ArrayListDate();
Long intervalDay = getDateInterval(DataConvertUtil.truncateTimeOfDate(startDate), DataConvertUtil.truncateTimeOfDate(endDate));
if (intervalDay 0){
return result;
}
for (Long len = 0L ; len = intervalDay ; len++){
Date currentDate = addDateFieId(startDate, Calendar.DATE, len.intValue());
result.add(currentDate);
}
return result;
}
public static Date addDateFieId(Date now,int fieid,int amount){
if (now == null){
return null;
}
if (amount == 0){
return now;
}
Calendar dar = Calendar.getInstance();
dar.setTime(now);
dar.add(fieid,amount);
return dar.getTime();
}
/*
* 计算当月有多少天
* @param year年
* @param month 月
* */
public static int days(int year,int month){
int days = 0;
if (month != 2){
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days=31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
}
}else{
if ( year % 4 == 0 year % 100 != 0 || year % 400 == 0){
days = 29;
}else{
days = 28;
}
}
return days;
}
/*
* 求两个日期差
* @param beginDate 开始日期
* @param endDate 结束日期
* @return 两个日期相差天数
* */
public static Long getDateInterval(Date starDate,Date endDate){
if (starDate.after(endDate)){
return -1L;
}
long interval = endDate.getTime() - starDate.getTime();
return interval / (1000 * 60 * 60 *24);
}
public static String getDataYID(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String format = simpleDateFormat.format(date);
return format;
}
public static String getDateYIDString(String date) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parse = simpleDateFormat.parse(date);
return getDataYID(parse);
}
public static String getDataHour(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HHmmss");
String format = simpleDateFormat.format(date);
return format;
}
java 常用工具封装日期类 相关文章
思维导图整理Java并发基础
话不多说,先上图。 1、基本概念 欲说线程,必先说进程。 进程 :进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程 :线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。 操作系统在
java中自定义excel模板并且填充内容
场景 读取某一份固定的excel模板,根据数据填充进入指定的位置 本地测试时,在本地resources下创建一个存放模板的位置 例: 实现 挺简单的就直接贴代码吧,不得不吐槽一下博客园的编辑器真的很难用.. @Override public void exportDeposit(UserInfo userInfo, Lo
Java-Apache Commons Jexl3-动态表达式判断
!-- https://mvnrepository.com/artifact/org.apache.commons/commons-jexl3 -- dependency groupIdorg.apache.commons/groupId artifactIdcommons-jexl3/artifactId version3.1/version /dependency /** * Jexl表达式计算 */ @Test public void jexlUseFun(
【Java】String字符串格式化
一、前言 String.format() 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,为了不止步于简单调用 String.format("Hello %s", "John"); ,下面将笔记整理并记录下来。 其实各个语言的字符串格式化方法都是相通的,你可以在其中找到你熟悉的语言
学习JAVA 的markdown第一天
Markdown学习 标题 +回车一级标题:##+回车二级标题:###+空格二级标题(最多二级标题 字体 Hellow,World!粗体 Hellow,World! 两边加两个星号+空格 Hellow,World!斜体 Hellow,World! 两边加一个星号+空格 Hellow,World斜体+加粗 Hellow,World! 两
javascript解决小数的加减乘除精度丢失的方案
原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况. javascript(js)的小数点加减乘除问题,是一个js的bug如0.3*1 = 0.2999999999等,下面列出可以完美求出相应精度的四种js算法 123456789101112131
Java 从0到Hello world
首先来看看这三个词:JDK、JRE、JVM JDK : Java Development Kit java开发者工具 包括JRE和JVM JRE : Java Runtime Environment java运行时环境 包含JVM JVM : Java Virtue Machine java虚拟机 卸载JDK(方便后来使用) 删除Java的安装目录 此电脑属性--高
Java操作MongoDB采用MongoRepository仓库进行条件查询
MongoDB与spring集成,操作mongo非常方便 主要有两种方式: 一、使用MongoTemplate 二、使用Spring Data Mongodb的MongoRepository 两者的区别就是第一种得自己写CURD语句,第二种非常方便基本不用自己写CURD语句 我之前一直使用的都是MongoTemplate,这次就
关于JVM
Java Virtual Machine JVM特性 平台无关性 Java虚拟机是实现Java平台无关性的关键,引入JVM后,Java语言在不同平台上运行时不需要重新编译。JVM在执行字节码时,把字节码解释成具体平台上的机器指令执行。 JVM的位置 JVM的体系结构 栈、本地方法栈、程序计数
封装Npgsql
using System;using System.Collections.Generic;using System.Linq;using System.Web;using Npgsql;using System.Configuration;using System.Data;namespace PostgreSQLTest.DAO{ public class NpgsqlHelper { private static string connectionString = C