Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
yangxiujun
/
paidan_demo
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 8eed56b0
authored
Oct 28, 2023
by
刘鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(时间工具类): 时间切片
1 parent
9b5f5bda
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
145 additions
and
0 deletions
project-order/src/main/java/com/dituhui/pea/order/common/DateSplit.java
project-order/src/main/java/com/dituhui/pea/order/common/jackson/DateUtil.java
project-order/src/main/java/com/dituhui/pea/order/common/DateSplit.java
0 → 100644
View file @
8eed56b
package
com
.
dituhui
.
pea
.
order
.
common
;
import
com.dituhui.pea.order.common.jackson.DateUtil
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.util.Date
;
@Getter
@RequiredArgsConstructor
@AllArgsConstructor
public
class
DateSplit
{
private
Date
startDateTime
;
private
Date
endDateTime
;
public
void
setStartDateTime
(
Date
startDateTime
)
{
this
.
startDateTime
=
startDateTime
;
}
public
void
setEndDateTime
(
Date
endDateTime
)
{
this
.
endDateTime
=
endDateTime
;
}
public
LocalDateTime
getStartLocalDateTime
()
{
return
DateUtil
.
fromDate
(
this
.
startDateTime
);
}
public
LocalDateTime
getLocalEndDateTime
()
{
return
DateUtil
.
fromDate
(
this
.
startDateTime
);
}
/**
* 获取开始时间片
*
* @return 开始时间
*/
public
LocalTime
getStartTime
()
{
return
this
.
getStartLocalDateTime
().
toLocalTime
();
}
/**
* 获取结束时间片
*
* @return 结束时间
*/
public
LocalTime
getEndTime
()
{
return
this
.
getLocalEndDateTime
().
toLocalTime
();
}
}
\ No newline at end of file
project-order/src/main/java/com/dituhui/pea/order/common/jackson/DateUtil.java
View file @
8eed56b
package
com
.
dituhui
.
pea
.
order
.
common
.
jackson
;
import
com.dituhui.pea.order.common.DateSplit
;
import
lombok.experimental.UtilityClass
;
import
org.springframework.util.Assert
;
...
...
@@ -8,6 +9,7 @@ import java.time.Duration;
import
java.time.Instant
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.Period
;
import
java.time.ZoneId
;
import
java.time.ZonedDateTime
;
...
...
@@ -15,9 +17,12 @@ import java.time.format.DateTimeFormatter;
import
java.time.temporal.Temporal
;
import
java.time.temporal.TemporalAmount
;
import
java.time.temporal.TemporalQuery
;
import
java.util.ArrayList
;
import
java.util.Calendar
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.GregorianCalendar
;
import
java.util.List
;
import
java.util.TimeZone
;
/**
...
...
@@ -495,4 +500,89 @@ public class DateUtil {
}
//CHECKSTYLE:ON
/**
* 按照分钟切割时间区间
*
*
*/
public
static
List
<
DateSplit
>
splitByMinute
(
Date
startTime
,
Date
endTime
,
int
intervalMinutes
)
{
if
(
endTime
.
getTime
()
<=
startTime
.
getTime
())
{
return
null
;
}
List
<
DateSplit
>
dateSplits
=
new
ArrayList
<>(
50
);
DateSplit
param
=
new
DateSplit
();
param
.
setStartDateTime
(
startTime
);
param
.
setEndDateTime
(
endTime
);
param
.
setEndDateTime
(
addMinute
(
startTime
,
intervalMinutes
));
while
(
true
)
{
param
.
setStartDateTime
(
startTime
);
Date
tempEndTime
=
addMinute
(
startTime
,
intervalMinutes
);
if
(
tempEndTime
.
getTime
()
>=
endTime
.
getTime
())
{
tempEndTime
=
endTime
;
}
param
.
setEndDateTime
(
tempEndTime
);
dateSplits
.
add
(
new
DateSplit
(
param
.
getStartDateTime
(),
param
.
getEndDateTime
()));
startTime
=
addMinute
(
startTime
,
intervalMinutes
);
if
(
startTime
.
getTime
()
>=
endTime
.
getTime
())
{
break
;
}
if
(
param
.
getEndDateTime
().
getTime
()
>=
endTime
.
getTime
())
{
break
;
}
}
return
dateSplits
;
}
/**
* 按照小时切割时间区间
*/
public
static
List
<
DateSplit
>
splitByHour
(
Date
startTime
,
Date
endTime
,
int
intervalHours
)
{
if
(
endTime
.
getTime
()
<=
startTime
.
getTime
())
{
return
Collections
.
emptyList
();
}
List
<
DateSplit
>
dateSplits
=
new
ArrayList
<>(
24
);
DateSplit
param
=
new
DateSplit
();
param
.
setStartDateTime
(
startTime
);
param
.
setEndDateTime
(
endTime
);
param
.
setEndDateTime
(
addHours
(
startTime
,
intervalHours
));
while
(
true
)
{
param
.
setStartDateTime
(
startTime
);
Date
tempEndTime
=
addHours
(
startTime
,
intervalHours
);
if
(
tempEndTime
.
getTime
()
>=
endTime
.
getTime
())
{
tempEndTime
=
endTime
;
}
param
.
setEndDateTime
(
tempEndTime
);
dateSplits
.
add
(
new
DateSplit
(
param
.
getStartDateTime
(),
param
.
getEndDateTime
()));
startTime
=
addHours
(
startTime
,
intervalHours
);
if
(
startTime
.
getTime
()
>=
endTime
.
getTime
())
{
break
;
}
if
(
param
.
getEndDateTime
().
getTime
()
>=
endTime
.
getTime
())
{
break
;
}
}
return
dateSplits
;
}
private
static
Date
addMinute
(
Date
date
,
int
minute
)
{
return
add
(
date
,
Calendar
.
MINUTE
,
minute
);
}
private
static
Date
addHours
(
Date
date
,
int
hours
)
{
return
add
(
date
,
Calendar
.
HOUR_OF_DAY
,
hours
);
}
private
static
Date
add
(
final
Date
date
,
final
int
calendarField
,
final
int
amount
)
{
final
Calendar
c
=
Calendar
.
getInstance
();
c
.
setTime
(
date
);
c
.
add
(
calendarField
,
amount
);
return
c
.
getTime
();
}
}
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment