* 跨天计算 两个时间之间,去除指定时间段,剩余时间的和 看一共有多少有效的时间 返回了 秒数
* @param start 开始时间 格式2019-09-17T09:09:55
* @param end 结束时间2019-09-18T09:09:55
* @param range 不需要计算小时数的 时间段 "20:00:00-08:00:00"
public String getInterval(String start, String end, String range) {
//获取要查询的日期范围内间隔了几天
long days = getDays(start, end);
if (days == 0) {//查询是当天的日期,也就是开始和结束都是属于同一天,不计算直接返回null 范围必须有一天的间隔
return null;
} else if (days >= 1) {
//无效时间
String[] splitForNo = range.split("-");
LocalTime startTimeForNo = LocalTime.parse(splitForNo[0]);
LocalTime endTimeForNo = LocalTime.parse(splitForNo[1]);
//要查询的时间范围
LocalTime startTime = LocalTime.parse(start.split("T")[1]);
LocalTime endTime = LocalTime.parse(end.split("T")[1]);
long startSeconds = Duration.between(startTime, startTimeForNo).toMillis() / 1000;
long endSeconds = Duration.between(endTimeForNo, endTime).toMillis() / 1000;
if (startSeconds < 0) {//说明 开始时间在无效时间之内
startSeconds = 0;
if (endSeconds < 0) {//说明 结束时间在无效时间之内
endSeconds = 0;
long noneSecones = getNoneSecones(startTimeForNo,endTimeForNo);
long l = startSeconds + endSeconds + (3600*24 - noneSecones) * (days - 1);
return String.valueOf(l);
return null;
* 获取指定范围内的间隔秒数
* @return
private long getNoneSecones( LocalTime startTimeForNo, LocalTime endTimeForNo) {
//凌晨时间
LocalTime zeroTime = LocalTime.parse("23:59:59");//0-23
//计算开始时间到凌晨12点的秒数
long betweenStart = Duration.between(startTimeForNo, zeroTime).abs().toMillis() / 1000 + 1;//补上面的那一秒24:00:00
//计算结束时间到凌晨12点的秒数
zeroTime = LocalTime.parse("00:00:00");
long betweenEnd = Duration.between(zeroTime, endTimeForNo).abs().toMillis() / 1000;
//无效时间总和是
return betweenStart + betweenEnd;
* 算出指定时间的间隔天数
* @param start
* @param end
* @return
private long getDays(String start, String end) {
String t = start.split("T")[0] + "T00:00:00";
String t2 = end.split("T")[0] + "T00:00:00";
LocalDateTime startT = LocalDateTime.parse(t);
LocalDateTime endT = LocalDateTime.parse(t2);
//获取参数间隔的天数
return Duration.between(startT, endT).toDays();
一、
给定
一个
日期
值,
求
出此
日期
所在星期的星期一和星期天的
日期
数据 例如
给定
一个
日期
2010-09-01,
求
出它所在星期的星期一是2010-08-30,星期天是2010-09-05 Function创建如下: 代码如下: USE [MSSQL] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[My_OneDay_GetWeekFirstAndEndDay](@tmpDate DATETIME) RETURNS @tmpTable TABLE(FirstDay DATETIME , EndDa
1.问题描述
Java
后台有个属性的类型是LocalDateTime型,那么前端或者通过Postman测试传值时,直接使用String的
时间
是不可以的。这里设计到
一个
类型转换的问题
在
java
后台LocalDateTime类型的属性上面添加两个注解,如下:
@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") // 表示返回
时间
类型
@JsonFormat(pattern="yyyy-MM-dd HH
Java
计算一段
时间段
内的工作日(除去周六周日)1、前端界面简介2、后台处理代码3、注释:《END》
实现功能提要: 本文章记录的是某段
时间
的起止
时间段
内的工作日(除去周六日,节假日的暂时先不记录);
1、前端界面简介
其他的先不考虑,主要是由前台传递到后台的假期开始
时间
和结束
时间
;
2、后台处理代码
此段直接进入正题,处理代码我封装到Utils工具类中了,因此关于接收前台
时间
数据、方...
java
计算
有效
时长,有一
时间段
不计算时长计算时效性
计算 2020-08-07 10:10:23 到 2020-08-08 22:10:23
时间段
内有多少小时,每天的01:00:00至06:00:00不计时长
计算时效性
同一天内有6种情况,分别是
00:00:00[s][e]01:00:00;
00:00:00[s]01:00:00 AND 01:00:00[e]06:00:00
00:00:00[s]01:00:00 AND 06:00:00[e]23:59:59
01:00:00[s][e]06
前端与后端之间
时间
的传输大概有以下几种实现方式@DateTimeFormat和@JsonFormat注解配置文件中统一设置converter手动转换
大概有以下几种实现方式
前端传的参大概有这么几种格式:
时间
戳、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss。
下面介绍几种常见的处理方式,
时间
戳直接跳到Converter。
@DateTimeFormat和@JsonFormat注解
@DateTimeFormat是前端往后段传的时候使用,加在实体类中,然后controller中直接使用这个实
* @return true-同一天 false-不是同一天
private boolean isSameDate(Date listTime, Date presentTime) {
//实例化
Calendar cal
最近有个需
求
是判断在创建新对象的今天之前已经创建了这个对象,如果是昨天创建的,则正常;
通过Calendar来获取date对象的年份和在该年份中第几天,然后比较这两个信息来判断是不是同一天
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2018-...
* @return
public static long calHoursFromDayToCurrentDay(String fromTime, String toTime) {
这种情况基本是由于开始
时间
并不是当天早上8:00开始的,检查方法是在“文件-->选项”-->"常规"中可以设置
日期
的显示格式,如下图,改成显示几点几分钟的格式,然后再检查一下那个开始
时间
是不是从早上8:00开始,很可能不是。我们通常输入工期1d,软件的理解是8h,如果开始
时间
是早上9:00开始的,那么完成
时间
就变成了第二天的9:00完成了,因为第一天有7个小时,第二天再取1个小时从8:00到9:0
今天周五,闲着也没什么事做,就想总结一下以前遇到的一些小问题,也算是强化一下编码能力和基础知识掌握程度吧!在我们开发的过程中,时常会遇到一些
日期
的处理,这是怎么也避免不了的,对于这些问题,对于
一个
新手来说还真是
一个
棘手的问题,因为当初我就为它愁过。当然,对于已经上班工作的程序员来说,解决这样的问题应当是随手拈来,不能被这样的小问题困扰了。再说,对于
日期
的转换我们可以采取两种处理方法:1.在sql语...
java
对前台传入的
日期
字符串的处理(
日期
加1 ,
时间
戳与
日期
互转)
日期
加1
public static String getDateAdd(String date) {
System.out.println("String类型 " + date); //页面传递到后台的
时间
为String类型
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Java
后台在接受前端传递的参数时候会判断参数的格式是否正确如果参数格式不正确,直接返回给前端页面一些错误的提示。这样就减少了垃圾数据进入数据库中的操作。前端校验一般都用正则,后台接受数据如何校验呢?下面我将自己写的一些后台的简单的校验数据参数的格式的方法说一下:引入包:import
java
.util.regex.Matcher;import
java
.util.regex.Pattern;定义...