java关于日期的一些常用方法总结
来源:互联网 发布:python多进程代码 编辑:程序博客网 时间:2024/06/08 06:52
001
public
class
DateUtil {
002
003
//泽勒一致性公式计算星期几
004
public
static
String getWeekOfDate(
int
year,
int
month,
int
day) {
005
int
q = day;
006
int
m;
007
String weekday[] =
new
String[] {
"Saturday"
,
"Sunday"
,
"Monday"
,
008
"Tuesday"
,
"Wednessday"
,
"Thursday"
,
"Friday"
};
009
switch
(month) {
010
case
1
:
011
m =
13
;
012
year = year -
1
;
013
break
;
014
case
2
:
015
m =
14
;
016
year = year -
1
;
017
break
;
018
default
:
019
m = month;
020
break
;
021
}
022
int
j = year /
100
;
023
int
k = year %
100
;
024
int
h = (q +
26
* (m +
1
) /
10
+ k + k /
4
+ j /
4
+
5
* j) %
7
;
025
return
weekday[h];
026
}
027
028
//计算两个时间段之间的星期数
029
public
static
Object countTwoDayWeek(String startDate, String endDate) {
030
if
(StringUtils.isNotEmpty(startDate)
031
&& StringUtils.isNotEmpty(endDate)) {
032
long
between_days=getDaysBetweenDates(startDate, endDate);
033
Double days = Double.parseDouble(String.valueOf(between_days));
034
if
((days /
7
) >
0
&& (days /
7
) <=
1
) {
035
// 不满一周的按一周算
036
return
1
;
037
}
else
if
(days /
7
>
1
) {
038
int
day = days.intValue();
039
if
(day %
7
>
0
) {
040
return
day /
7
+
1
;
041
}
else
{
042
return
day /
7
;
043
}
044
}
else
if
((days /
7
) ==
0
) {
045
return
0
;
046
}
else
{
047
// 负数返还null
048
return
null
;
049
}
050
}
051
return
null
;
052
}
053
054
//计算两个时间段的天数
055
public
static
long
getDaysBetweenDates(String startDate, String endDate) {
056
if
(StringUtils.isNotEmpty(startDate)
057
&& StringUtils.isNotEmpty(endDate)) {
058
DateFormat ft =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
059
Date start =
null
;
060
Date end =
null
;
061
try
{
062
start = ft.parse(startDate);
063
end = ft.parse(endDate);
064
}
catch
(ParseException e) {
065
// TODO Auto-generated catch block
066
e.printStackTrace();
067
}
068
Calendar cal = Calendar.getInstance();
069
cal.setTime(start);
070
long
time1 = cal.getTimeInMillis();
071
cal.setTime(end);
072
long
time2 = cal.getTimeInMillis();
073
long
between_days = (time2 - time1) / (
1000
*
3600
*
24
);
074
return
between_days;
075
}
076
return
0
;
077
}
078
079
//计算两个时间段之间的月数
080
public
static
int
getMonthSpace(String startDate, String endDate) {
081
DateFormat ft =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
082
Calendar c1 = Calendar.getInstance();
083
Calendar c2 = Calendar.getInstance();
084
try
{
085
c1.setTime(ft.parse(startDate));
086
c2.setTime(ft.parse(endDate));
087
}
catch
(ParseException e) {
088
e.printStackTrace();
089
}
090
if
(c1.getTimeInMillis() < c2.getTimeInMillis())
091
return
0
;
092
int
year1 = c1.get(Calendar.YEAR);
093
int
year2 = c2.get(Calendar.YEAR);
094
int
month1 = c1.get(Calendar.MONTH);
095
int
month2 = c2.get(Calendar.MONTH);
096
int
day1 = c1.get(Calendar.DAY_OF_MONTH);
097
int
day2 = c2.get(Calendar.DAY_OF_MONTH);
098
// 获取年的差值 假设 d1 = 2015-8-16 d2 = 2011-9-30
099
int
yearInterval = year1 - year2;
100
// 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
101
if
(month1 < month2 || month1 == month2 && day1 < day2)
102
yearInterval--;
103
// 获取月数差值
104
int
monthInterval = (month1 +
12
) - month2;
105
if
(day1 < day2)
106
monthInterval--;
107
monthInterval %=
12
;
108
return
yearInterval *
12
+ monthInterval;
109
}
110
111
public
static
void
main(String[] args) {
112
System.out.println(DateUtil.getWeekOfDate(
2017
,
9
,
30
));
113
System.out.println(DateUtil.getDaysBetweenDates(
"2016-09-30 06:30:15"
,
114
"2018-09-30 20:30:30"
));
115
System.out.println(DateUtil.getMonthSpace(
"2016-09-30 06:30:15"
,
116
"2015-08-31 05:30:30"
));
117
System.out.println(DateUtil.countTwoDayWeek(
"2017-09-30 06:30:15"
,
118
"2017-10-15 05:30:30"
));
119
}
120
}
阅读全文
0 0
- java关于日期的一些常用方法总结
- 关于bootstrap的一些常用方法总结
- java 日期天数计算的一些常用方法
- 常用的日期方法总结
- 关于js的一些常用方法的总结
- Java日期的常用方法
- java常用的日期方法
- Js常用的一些日期方法
- java中常用的日期格式化常用的一些方法和教程
- PHP获取日期的一些方法总结
- 关于一些input的一些常用方法
- Java对数据库的调用一些常用方法总结
- Java基础知识 十七 (关于反射一些方法的总结)
- java日期处理的一些总结
- Java常用的一些方法
- java 的一些常用方法
- 关于字符串操作常用的一些总结
- Java的日期格式化常用方法
- bzoj 1009&&1875[矩阵优化dp]
- eclipse编码设置都有哪些项?JavaEE开发常用preference 查找:workspace、JSP两项
- 【线段树】bzoj2957:楼房重建
- RabbitMQ之Work Queues
- 某同学的期末大作业 UNO的简单实现
- java关于日期的一些常用方法总结
- loadrunner Lr_类函数之lr_set_transaction_instance_status()
- spring+websocket整合(springMVC+spring+MyBatis即SSM框架和websocket技术的整合)
- Android开发中高效实用的shell命令脚本
- Nginx请求拦截处理示例
- 浅析HTTP缓存
- 连续总结第一天
- 并发编程参考手册
- 专业版