您的位置:首页 > 编程语言 > Java开发

java时间操作函数汇总

2010-04-09 10:24 405 查看
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:黑体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimHei;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:1 135135232 16 0 262144 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:1;
mso-generic-font-family:roman;
mso-font-format:other;
mso-font-pitch:variable;
mso-font-signature:0 0 0 0 0 0;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:roman;
mso-font-pitch:variable;
mso-font-signature:-1610611985 1073741899 0 0 159 0;}
@font-face
{font-family:微软雅黑;
panose-1:2 11 5 3 2 2 4 2 2 4;
mso-font-charset:134;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-2147483001 705641554 22 0 262175 0;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:1627400839 -2147483648 8 0 66047 0;}
@font-face
{font-family:"/@微软雅黑";
panose-1:2 11 5 3 2 2 4 2 2 4;
mso-font-charset:134;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:-2147483001 705641554 22 0 262175 0;}
@font-face
{font-family:"/@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"/@黑体";
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:1 135135232 16 0 262144 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
mso-pagination:none;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:宋体;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
h1
{mso-style-update:auto;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-link:"标题 1 Char";
mso-style-next:正文;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
margin-left:21.6pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-21.6pt;
line-height:240%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:1;
mso-list:l0 level1 lfo1;
font-size:16.0pt;
mso-bidi-font-size:22.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:黑体;
mso-font-kerning:22.0pt;
font-weight:normal;
mso-bidi-font-weight:bold;}
h2
{mso-style-update:auto;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 2 Char";
mso-style-next:正文;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
margin-left:28.8pt;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-28.8pt;
mso-pagination:none;
page-break-after:avoid;
mso-outline-level:2;
mso-list:l0 level2 lfo1;
text-autospace:none;
word-break:break-all;
font-size:15.0pt;
font-family:黑体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;
font-weight:normal;
mso-bidi-font-weight:bold;}
h3
{mso-style-update:auto;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 3 Char";
mso-style-next:正文;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
margin-left:57.3pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-36.0pt;
line-height:173%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:3;
mso-list:l0 level3 lfo1;
font-size:14.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:黑体;
mso-font-kerning:1.0pt;
font-weight:normal;
mso-bidi-font-weight:bold;}
h4
{mso-style-update:auto;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 4 Char";
mso-style-next:正文;
margin-top:14.0pt;
margin-right:0cm;
margin-bottom:14.5pt;
margin-left:43.2pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-43.2pt;
line-height:156%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:4;
mso-list:l0 level4 lfo1;
font-size:12.0pt;
mso-bidi-font-size:14.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:黑体;
mso-font-kerning:1.0pt;
font-weight:normal;
mso-bidi-font-weight:bold;}
h5
{mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 5 Char";
mso-style-next:正文;
margin-top:14.0pt;
margin-right:0cm;
margin-bottom:14.5pt;
margin-left:50.4pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-50.4pt;
line-height:156%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:5;
mso-list:l0 level5 lfo1;
font-size:14.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;}
h6
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 6 Char";
mso-style-next:正文;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:57.6pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-57.6pt;
line-height:133%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:6;
mso-list:l0 level6 lfo1;
font-size:12.0pt;
font-family:"Cambria","serif";
mso-fareast-font-family:宋体;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 7 Char";
mso-style-next:正文;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:64.8pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-64.8pt;
line-height:133%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:7;
mso-list:l0 level7 lfo1;
font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-fareast-font-family:宋体;
mso-font-kerning:1.0pt;
font-weight:bold;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 8 Char";
mso-style-next:正文;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:72.0pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-72.0pt;
line-height:133%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:8;
mso-list:l0 level8 lfo1;
font-size:12.0pt;
font-family:"Cambria","serif";
mso-fareast-font-family:宋体;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
{mso-style-noshow:yes;
mso-style-priority:9;
mso-style-qformat:yes;
mso-style-link:"标题 9 Char";
mso-style-next:正文;
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
margin-left:79.2pt;
text-align:justify;
text-justify:inter-ideograph;
text-indent:-79.2pt;
line-height:133%;
mso-pagination:lines-together;
page-break-after:avoid;
mso-outline-level:9;
mso-list:l0 level9 lfo1;
font-size:10.5pt;
font-family:"Cambria","serif";
mso-fareast-font-family:宋体;
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:1.0pt;}
span.1Char
{mso-style-name:"标题 1 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 1";
mso-ansi-font-size:16.0pt;
mso-bidi-font-size:22.0pt;
font-family:"Times New Roman","serif";
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:黑体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-font-kerning:22.0pt;
mso-bidi-font-weight:bold;}
span.2Char
{mso-style-name:"标题 2 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 2";
mso-ansi-font-size:15.0pt;
mso-bidi-font-size:15.0pt;
font-family:黑体;
mso-ascii-font-family:黑体;
mso-fareast-font-family:黑体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-bidi-font-weight:bold;}
span.3Char
{mso-style-name:"标题 3 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 3";
mso-ansi-font-size:14.0pt;
mso-bidi-font-size:16.0pt;
font-family:"Times New Roman","serif";
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:黑体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-bidi-font-weight:bold;}
span.4Char
{mso-style-name:"标题 4 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 4";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:14.0pt;
font-family:"Times New Roman","serif";
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:黑体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
mso-bidi-font-weight:bold;}
span.5Char
{mso-style-name:"标题 5 Char";
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 5";
mso-ansi-font-size:14.0pt;
mso-bidi-font-size:14.0pt;
font-family:"Times New Roman","serif";
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:宋体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
font-weight:bold;}
span.6Char
{mso-style-name:"标题 6 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 6";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-fareast-font-family:宋体;
mso-hansi-font-family:Cambria;
mso-bidi-font-family:"Times New Roman";
font-weight:bold;}
span.7Char
{mso-style-name:"标题 7 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 7";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Times New Roman","serif";
mso-ascii-font-family:"Times New Roman";
mso-fareast-font-family:宋体;
mso-hansi-font-family:"Times New Roman";
mso-bidi-font-family:"Times New Roman";
font-weight:bold;}
span.8Char
{mso-style-name:"标题 8 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 8";
mso-ansi-font-size:12.0pt;
mso-bidi-font-size:12.0pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-fareast-font-family:宋体;
mso-hansi-font-family:Cambria;
mso-bidi-font-family:"Times New Roman";}
span.9Char
{mso-style-name:"标题 9 Char";
mso-style-noshow:yes;
mso-style-priority:9;
mso-style-unhide:no;
mso-style-locked:yes;
mso-style-link:"标题 9";
mso-bidi-font-size:10.5pt;
font-family:"Cambria","serif";
mso-ascii-font-family:Cambria;
mso-fareast-font-family:宋体;
mso-hansi-font-family:Cambria;
mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
/* Page Definitions */
@page
{mso-page-border-surround-header:no;
mso-page-border-surround-footer:no;}
@page Section1
{size:595.3pt 841.9pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;
mso-header-margin:42.55pt;
mso-footer-margin:49.6pt;
mso-paper-source:0;
layout-grid:15.6pt;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:1154444937;
mso-list-template-ids:-1708851998;}
@list l0:level1
{mso-level-style-link:"标题 1";
mso-level-text:%1;
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:21.6pt;
text-indent:-21.6pt;}
@list l0:level2
{mso-level-style-link:"标题 2";
mso-level-text:"%1/.%2";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:28.8pt;
text-indent:-28.8pt;}
@list l0:level3
{mso-level-style-link:"标题 3";
mso-level-text:"%1/.%2/.%3";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:57.3pt;
text-indent:-36.0pt;}
@list l0:level4
{mso-level-style-link:"标题 4";
mso-level-text:"%1/.%2/.%3/.%4";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:43.2pt;
text-indent:-43.2pt;}
@list l0:level5
{mso-level-style-link:"标题 5";
mso-level-text:"%1/.%2/.%3/.%4/.%5";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:50.4pt;
text-indent:-50.4pt;}
@list l0:level6
{mso-level-style-link:"标题 6";
mso-level-text:"%1/.%2/.%3/.%4/.%5/.%6";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:57.6pt;
text-indent:-57.6pt;}
@list l0:level7
{mso-level-style-link:"标题 7";
mso-level-text:"%1/.%2/.%3/.%4/.%5/.%6/.%7";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:64.8pt;
text-indent:-64.8pt;}
@list l0:level8
{mso-level-style-link:"标题 8";
mso-level-text:"%1/.%2/.%3/.%4/.%5/.%6/.%7/.%8";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:72.0pt;
text-indent:-72.0pt;}
@list l0:level9
{mso-level-style-link:"标题 9";
mso-level-text:"%1/.%2/.%3/.%4/.%5/.%6/.%7/.%8/.%9";
mso-level-tab-stop:none;
mso-level-number-position:left;
margin-left:79.2pt;
text-indent:-79.2pt;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
-->

1.
计算某一月份的最大天数

Calendar time=Calendar.getInstance();

time.clear();

time.set(Calendar.YEAR,year);

time.set(Calendar.MONTH,i-1);//
注意,Calendar
对象默认一月为0

int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//
本月份的天数

注:在使用set
方法之前,必须先clear
一下,否则很多信息会继承自系统当前时间

2.Calendar
和Date
的转化

(1) Calendar
转化为Date

Calendar cal=Calendar.getInstance();

Date date=cal.getTime();

(2) Date
转化为Calendar

Date date=new Date();

Calendar cal=Calendar.getInstance();

cal.setTime(date);

3.
格式化输出日期时间

Date date=new Date();

SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

System.out.println(df.format(date));

4.
计算一年中的第几星期

(1)
计算某一天是一年中的第几星期

Calendar cal=Calendar.getInstance();

cal.set(Calendar.YEAR, 2006);

cal.set(Calendar.MONTH, 8);

cal.set(Calendar.DAY_OF_MONTH, 3);

int weekno=cal.get(Calendar.WEEK_OF_YEAR);

(2)
计算一年中的第几星期是几号

SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");

Calendar cal=Calendar.getInstance();

cal.set(Calendar.YEAR, 2006);

cal.set(Calendar.WEEK_OF_YEAR, 1);

cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

System.out.println(df.format(cal.getTime()));

输出:

2006-01-02

5.add()
和roll()
的用法

(1)add()
方法

SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");

Calendar cal=Calendar.getInstance();

cal.set(Calendar.YEAR, 2006);

cal.set(Calendar.MONTH, 8);

cal.set(Calendar.DAY_OF_MONTH, 3);

cal.add(Calendar.DATE, -4);

Date date=cal.getTime();

System.out.println(df.format(date));

cal.add(Calendar.DATE, 4);

date=cal.getTime();

System.out.println(df.format(date));

输出:

2006-08-30

2006-09-03

(2)roll
方法

cal.set(Calendar.YEAR, 2006);

cal.set(Calendar.MONTH, 8);

cal.set(Calendar.DAY_OF_MONTH, 3);

cal.roll(Calendar.DATE, -4);

date=cal.getTime();

System.out.println(df.format(date));

cal.roll(Calendar.DATE, 4);

date=cal.getTime();

System.out.println(df.format(date));

输出:

2006-09-29

2006-09-03

可见,roll()
方法在本月内循环,一般使用add()
方法;

6.
计算两个任意时间中间的间隔天数

(1)
传进Calendar
对象

/** *//**
计算两个时间之间相隔天数

* @param startday
开始时间

* @param endday
结束时间

* @return

*/

public int getIntervalDays(Calendar startday,Calendar endday)...{

//
确保startday
在endday
之前

if(startday.after(endday))...{

Calendar cal=startday;

startday=endday;

endday=cal;

}

//
分别得到两个时间的毫秒数

long sl=startday.getTimeInMillis();

long el=endday.getTimeInMillis();

long ei=el-sl;

//
根据毫秒数计算间隔天数

return (int)(ei/(1000*60*60*24));

}

(2)
传进Date
对象

/** *//**
计算两个时间之间相隔天数

* @param startday
开始时间

* @param endday
结束时间

* @return

*/

public int getIntervalDays(Date startday,Date endday)...{

//
确保startday
在endday
之前

if(startday.after(endday))...{

Date cal=startday;

startday=endday;

endday=cal;

}

//
分别得到两个时间的毫秒数

long sl=startday.getTime();

long el=endday.getTime();

long ei=el-sl;

//
根据毫秒数计算间隔天数

return (int)(ei/(1000*60*60*24));

}
同理,可以用相同的方法计算出任意两个时间相隔的小时数,分钟数,秒钟数等

注:以上方法是完全按时间计算,有时并不能令人满意,如:

startday="2006-10-11 20:00:00"

endday="2006-10-12 8:00:00"

计算结果为0
,但是我们也许相让计算结果变为1
,此时可以用如下方法实现:

在传参之前,先设定endday
的时间,如:

endday.set(Calendar.HOUR_OF_DAY, 23);

endday.set(Calendar.MINUTE, 59);

endday.set(Calendar.SECOND, 59);

endday.set(Calendar.MILLISECOND, 59);

这样再传进去startday,endday
,则结果就如我们所愿了。不过,如果嫌以上方法麻烦,可以参考以下方法:

(3)
改进精确计算相隔天数的方法

public int getDaysBetween (Calendar d1, Calendar d2) ...{

if (d1.after(d2)) ...{ // swap dates so that d1 is start and d2 is end

java.util.Calendar swap = d1;

d1 = d2;

d2 = swap;

}

int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);

int y2 = d2.get(Calendar.YEAR);

if (d1.get(Calendar.YEAR) != y2) ...{

d1 = (Calendar) d1.clone();

do ...{

days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//
得到当年的实际天数

d1.add(Calendar.YEAR, 1);

} while (d1.get(Calendar.YEAR) != y2);

}

return days;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: