﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-莫听穿林打叶声，何妨吟啸且徐行</title><link>http://www.blogjava.net/justBlue/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 08:57:55 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 08:57:55 GMT</pubDate><ttl>60</ttl><item><title>计算Java日期－－学习怎样创建和使用日期</title><link>http://www.blogjava.net/justBlue/articles/227362.html</link><dc:creator>justBlue</dc:creator><author>justBlue</author><pubDate>Sat, 06 Sep 2008 00:41:00 GMT</pubDate><guid>http://www.blogjava.net/justBlue/articles/227362.html</guid><wfw:comment>http://www.blogjava.net/justBlue/comments/227362.html</wfw:comment><comments>http://www.blogjava.net/justBlue/articles/227362.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justBlue/comments/commentRss/227362.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justBlue/services/trackbacks/227362.html</trackback:ping><description><![CDATA[<p>&nbsp;来源:linuxsir</p>
<p>&nbsp;概要</p>
<p>不管你是处理财务交易还是计划着下一步的行动，你都要知道怎样在Java中建立，使用和显示日期。这需要你简单的查阅一下相应类的API参考：一个日期可以创建3个相关类的对象。这篇文章告诉你你想要知道的内容。</p>
<p>Java统计从1970年1月1日起的毫秒的数量表示日期。也就是说，例如，1970年1月2日，是在1月1日后的86，400，000毫秒。同样的， 1969年12月31日是在1970年1月1日前86，400，000毫秒。Java的Date类使用long类型纪录这些毫秒值.因为long是有符号整数，所以日期可以在1970年1月1日之前，也可以在这之后。Long类型表示的最大正值和最大负值可以轻松的表示290，000，000年的时间，这适合大多数人的时间要求。</p>
<p>Date 类</p>
<p>Date类可以在java.util包中找到，用一个long类型的值表示一个指定的时刻。它的一个有用的构造函数是Date(),它创建一个表示创建时刻的对象。getTime()方法返回Date对象的long值。在下面的程序中，我使用Date()构造函数创建一个表示程序运行时刻的对象，并且利用 getTime()方法找到这个日期代表的毫秒数量：<br />
</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_38_179_Open_Image" onclick="this.style.display='none'; Codehighlighter1_38_179_Open_Text.style.display='none'; Codehighlighter1_38_179_Closed_Image.style.display='inline'; Codehighlighter1_38_179_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_38_179_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_38_179_Closed_Text.style.display='none'; Codehighlighter1_38_179_Open_Image.style.display='inline'; Codehighlighter1_38_179_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Now&nbsp;</span><span id="Codehighlighter1_38_179_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_38_179_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img id="Codehighlighter1_79_177_Open_Image" onclick="this.style.display='none'; Codehighlighter1_79_177_Open_Text.style.display='none'; Codehighlighter1_79_177_Closed_Image.style.display='inline'; Codehighlighter1_79_177_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_79_177_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_79_177_Closed_Text.style.display='none'; Codehighlighter1_79_177_Open_Image.style.display='inline'; Codehighlighter1_79_177_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_79_177_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_79_177_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Date&nbsp;now&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date();<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;nowLong&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;now.getTime();<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Value&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;nowLong);<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p><br />
当我运行这个程序后，我得到972,568,255,150.快速确认一下这个数字，起码在一个合理的范围：它不到31年，这个数值相对1970年1月1 日到我写这篇文章的时间来说，是合理的。计算机是这个毫秒值表示时间，人们可不愿意说" 我将在996,321,998,34见到你。"幸运的是，Java提供了一个转换Date对象到字符串的途径，表示成传统的形式。我们在下一节讨论 DateFormat类，它直观的建立日期字符串。 <br />
DateFormat类<br />
DateFormat类的一个目标是建立一个人们能够识别的字符串。然而，因为语言的差别，不是所有的人希望看到严格的相同格式的日期。法国人更喜欢看到 "25 decembre 2000,",但是美国人习惯看到"December 25,2000."所以一个DateFormat的实例创建以后，这个对象包含了日期的显示格式的信息。如果使用用户电脑区域设置缺省的格式，你可以象下面那样，创建DateFormat对象，使用getDateInstance()方法：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">DateFormat&nbsp;df&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance();&nbsp;</span></div>
<p>&nbsp;</p>
<p>DateFormat类在java.text包中可以找到。</p>
<p>转换成字符串</p>
<p>你可以使用format()方法转换Date对象为一个字符串。下面的示例程序说明了这个问题：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_64_242_Open_Image" onclick="this.style.display='none'; Codehighlighter1_64_242_Open_Text.style.display='none'; Codehighlighter1_64_242_Closed_Image.style.display='inline'; Codehighlighter1_64_242_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_64_242_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_64_242_Closed_Text.style.display='none'; Codehighlighter1_64_242_Open_Image.style.display='inline'; Codehighlighter1_64_242_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;NowString&nbsp;</span><span id="Codehighlighter1_64_242_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_64_242_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_105_240_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_240_Open_Text.style.display='none'; Codehighlighter1_105_240_Closed_Image.style.display='inline'; Codehighlighter1_105_240_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_105_240_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_105_240_Closed_Text.style.display='none'; Codehighlighter1_105_240_Open_Image.style.display='inline'; Codehighlighter1_105_240_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_105_240_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_105_240_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Date&nbsp;now&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.format(now);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Today&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p><br />
在上面的代码中，展示了没有参数，使用缺省格式的getDateInstance()方法。Java还提供了几个选择日期格式，你可以通过使用重载的 getDateInstance(int style)获得。出于方便的原因，DateFormat提供了几种预置的常量，你可以使用这些常量参数。下面是几个SHORT, MEDIUM, LONG, 和FULL类型的示例：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_64_805_Open_Image" onclick="this.style.display='none'; Codehighlighter1_64_805_Open_Text.style.display='none'; Codehighlighter1_64_805_Closed_Image.style.display='inline'; Codehighlighter1_64_805_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_64_805_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_64_805_Closed_Text.style.display='none'; Codehighlighter1_64_805_Open_Image.style.display='inline'; Codehighlighter1_64_805_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;StyleDemo&nbsp;</span><span id="Codehighlighter1_64_805_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_64_805_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_105_803_Open_Image" onclick="this.style.display='none'; Codehighlighter1_105_803_Open_Text.style.display='none'; Codehighlighter1_105_803_Closed_Image.style.display='inline'; Codehighlighter1_105_803_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_105_803_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_105_803_Closed_Text.style.display='none'; Codehighlighter1_105_803_Open_Image.style.display='inline'; Codehighlighter1_105_803_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_105_803_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_105_803_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Date&nbsp;now&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Date();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance(DateFormat.SHORT);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance(DateFormat.MEDIUM);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance(DateFormat.LONG);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df4&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance(DateFormat.FULL);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.format(now);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df1.format(now);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df2.format(now);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s3&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df3.format(now);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s4&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df4.format(now);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">(Default)&nbsp;Today&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">(SHORT)&nbsp;Today&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s1);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">(MEDIUM)&nbsp;Today&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s2);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">(LONG)&nbsp;Today&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s3);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">(FULL)&nbsp;Today&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s4);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p><br />
程序输出如下：</p>
<p>(Default) Today is Nov 8, 2000<br />
(SHORT) Today is 11/8/00<br />
(MEDIUM) Today is Nov 8, 2000<br />
(LONG) Today is November 8, 2000<br />
(FULL) Today is Wednesday, November 8, 2000</p>
<p>同样的程序，在我的电脑上使用缺省设置运行后，改变区域设置为瑞典，输出如下：</p>
<p>(Default) Today is 2000-nov-08<br />
(SHORT) Today is 2000-11-08<br />
(MEDIUM) Today is 2000-nov-08<br />
(LONG) Today is den 8 november 2000<br />
(FULL) Today is den 8 november 2000 </p>
<p>从这里，你能看到，瑞典的月份不是大写的（虽然November还是november）.还有，LONG和FULL版本在瑞典语中是一样的，但是美国英语却不同。另外，有趣的是，瑞典语单词的星期三,onsdag，没有包含在FULL日期里，英语却包括。 <br />
注意你能够使用getDateInstance()方法改变DateFormat实例的语种；但是，在上面的例子中，是通过改变Windows98的控制面板的区域设置做到的。不同的地方的区域设置不同，结果就不同，这样有好处，也有不足，Java程序员应该了解这些。一个好处是Java程序员可以只写一行代码就可以显示日期，而且世界不同地区的电脑运行同样的程序会有不用的日期格式。但是这也是一个缺点，当程序员希望显示同一种格式的时--这也有可取之处，举例来说，在程序中混合输出文本和日期，如果文本是英文，我们就不希望日期格式是其他的格式，象德文或是西班牙文。如果程序员依靠日期格式编程，日期格式将根据运行程序所在电脑的区域设置不用而不同。 </p>
<p>解析字符串</p>
<p>通过parse()方法，DateFormat能够以一个字符串创立一个Date对象。这个方法能抛出ParseException异常，所以你必须使用适当的异常处理技术。下面的例子程序通过字符串创建Date对象：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_67_294_Open_Image" onclick="this.style.display='none'; Codehighlighter1_67_294_Open_Text.style.display='none'; Codehighlighter1_67_294_Closed_Image.style.display='inline'; Codehighlighter1_67_294_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_67_294_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_67_294_Closed_Text.style.display='none'; Codehighlighter1_67_294_Open_Image.style.display='inline'; Codehighlighter1_67_294_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;ParseExample&nbsp;</span><span id="Codehighlighter1_67_294_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_67_294_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_108_292_Open_Image" onclick="this.style.display='none'; Codehighlighter1_108_292_Open_Text.style.display='none'; Codehighlighter1_108_292_Closed_Image.style.display='inline'; Codehighlighter1_108_292_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_108_292_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_108_292_Closed_Text.style.display='none'; Codehighlighter1_108_292_Open_Image.style.display='inline'; Codehighlighter1_108_292_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_108_292_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_108_292_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;ds&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">November&nbsp;1,&nbsp;2000</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance();<br />
<img id="Codehighlighter1_192_217_Open_Image" onclick="this.style.display='none'; Codehighlighter1_192_217_Open_Text.style.display='none'; Codehighlighter1_192_217_Closed_Image.style.display='inline'; Codehighlighter1_192_217_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_192_217_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_192_217_Closed_Text.style.display='none'; Codehighlighter1_192_217_Open_Image.style.display='inline'; Codehighlighter1_192_217_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_192_217_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_192_217_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Date&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.parse(ds);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_243_290_Open_Image" onclick="this.style.display='none'; Codehighlighter1_243_290_Open_Text.style.display='none'; Codehighlighter1_243_290_Closed_Image.style.display='inline'; Codehighlighter1_243_290_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_243_290_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_243_290_Closed_Text.style.display='none'; Codehighlighter1_243_290_Open_Image.style.display='inline'; Codehighlighter1_243_290_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">catch</span><span style="color: #000000">(ParseException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_243_290_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_243_290_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Unable&nbsp;to&nbsp;parse&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;ds);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>&nbsp;</p>
<p>在创建一个任意的日期时parse()方法很有用。我将通过另一种方法创建一个任意得日期。同时，你将看到怎样进行基本日期计算，例如计算90天后的另一天。你可以使用GregorianCalendar类来完成这个任务。 <br />
GregorianCalendar类<br />
创建一个代表任意日期的一个途径使用GregorianCalendar类的构造函数，它包含在java.util包中：</p>
<p>GregorianCalendar(int year, int month, int date) </p>
<p>注意月份的表示，一月是0，二月是1，以此类推，是12月是11。因为大多数人习惯于使用单词而不是使用数字来表示月份，这样程序也许更易读，父类 Calendar使用常量来表示月份：JANUARY, FEBRUARY,等等。所以，创建Wilbur 和 Orville制造第一架动力飞机的日期（December 17, 1903），你可以使用：</p>
<p>GregorianCalendar firstFlight = new GregorianCalendar(1903, Calendar.DECEMBER, 17); </p>
<p>出于清楚的考虑，你应该使用前面的形式。但是，你也应该学习怎样阅读下面的短格式。下面的例子同样表示December 17,1903（记住，在短格式中，11表示December）</p>
<p>GregorianCalendar firstFlight = new GregorianCalendar(1903, 11, 17); </p>
<p>在上一节中，你学习了转换Date对象到字符串。这里，你可以做同样的事情；但是首先，你需要将GregorianCalendar对象转换到Date。要做到这一点，你可以使用getTime()方法，从它得父类Calendar继承而来。GetTime()方法返回GregorianCalendar 相应的Date对象。你能够创建GregorianCalendar对象，转换到Date对象，得到和输出相应的字符串这样一个过程。下面是例子： </p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_61_340_Open_Image" onclick="this.style.display='none'; Codehighlighter1_61_340_Open_Text.style.display='none'; Codehighlighter1_61_340_Closed_Image.style.display='inline'; Codehighlighter1_61_340_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_61_340_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_61_340_Closed_Text.style.display='none'; Codehighlighter1_61_340_Open_Image.style.display='inline'; Codehighlighter1_61_340_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Flight&nbsp;</span><span id="Codehighlighter1_61_340_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_61_340_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_103_338_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_338_Open_Text.style.display='none'; Codehighlighter1_103_338_Closed_Image.style.display='inline'; Codehighlighter1_103_338_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_103_338_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_103_338_Closed_Text.style.display='none'; Codehighlighter1_103_338_Open_Image.style.display='inline'; Codehighlighter1_103_338_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_103_338_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_103_338_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />GregorianCalendar&nbsp;firstFlight&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;GregorianCalendar(</span><span style="color: #000000">1903</span><span style="color: #000000">,&nbsp;Calendar.DECEMBER,&nbsp;</span><span style="color: #000000">17</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Date&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;firstFlight.getTime();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.format(d);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">First&nbsp;flight&nbsp;was&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>&nbsp;</p>
<p>有时候创建一个代表当前时刻的GregorianCalendar类的实例是很有用的。你可以简单的使用没有参数的GregorianCalendar构造函数，象这样：</p>
<p>GregorianCalendar thisday = new GregorianCalendar();</p>
<p>一个输出今天日期的例子程序，使用GregorianCalendar对象：</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.text.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_53_288_Open_Image" onclick="this.style.display='none'; Codehighlighter1_53_288_Open_Text.style.display='none'; Codehighlighter1_53_288_Closed_Image.style.display='inline'; Codehighlighter1_53_288_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_53_288_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_53_288_Closed_Text.style.display='none'; Codehighlighter1_53_288_Open_Image.style.display='inline'; Codehighlighter1_53_288_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Today&nbsp;</span><span id="Codehighlighter1_53_288_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_53_288_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_94_286_Open_Image" onclick="this.style.display='none'; Codehighlighter1_94_286_Open_Text.style.display='none'; Codehighlighter1_94_286_Closed_Image.style.display='inline'; Codehighlighter1_94_286_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_94_286_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_94_286_Closed_Text.style.display='none'; Codehighlighter1_94_286_Open_Image.style.display='inline'; Codehighlighter1_94_286_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span id="Codehighlighter1_94_286_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_94_286_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />GregorianCalendar&nbsp;thisday&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;GregorianCalendar();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Date&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;thisday.getTime();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DateFormat&nbsp;df&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DateFormat.getDateInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;df.format(d);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">Today&nbsp;is&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;s);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>&nbsp;</p>
<p>注意到，Date()构造函数和GregorianCalendar()构造函数很类似：都创建一个对象，条件简单，代表今天。</p>
<p>日期处理</p>
<p>GregorianCalendar类提供处理日期的方法。一个有用的方法是add().使用add()方法，你能够增加象年，月数，天数到日期对象中。要使用add()方法，你必须提供要增加的字段，要增加的数量。一些有用的字段是DATE, MONTH, YEAR, 和 WEEK_OF_YEAR。下面的程序使用add()方法计算未来80天的一个日期。在Jules的&lt;环球80天&gt;是一个重要的数字，使用这个程序可以计算Phileas Fogg从出发的那一天1872年10月2日后80天的日期：</p>
<p>i这个例子是想象的，但在一个日期上增加天数是一个普遍的操作：影碟可以租3天，图书馆可以借书21天，商店经常需要将购买的物品在30天内卖出。下面的程序演示了使用年计算：</p>
<p>import java.util.*;<br />
import java.text.*;</p>
<p>public class Mortgage {<br />
public static void main(String[] args) {<br />
GregorianCalendar mortgage = new GregorianCalendar(1997, Calendar.MAY, 18);<br />
mortgage.add(Calendar.YEAR, 15);<br />
Date d = mortgage.getTime();<br />
DateFormat df = DateFormat.getDateInstance();<br />
String s = df.format(d);<br />
System.out.println("15 year mortgage amortized on " + s); }<br />
}</p>
<p>add()一个重要的副作用是它改变的原来的日期。有时候，拥有原始日期和修改后的日期很重要。不幸的是，你不能简单的创建一个 GregorianCalendar对象，设置它和原来的相等（equal）。原因是两个变量指向同一个Date()对象地址。如果Date对象改变，两个变量就指向改变后的日期对象。代替这种做法，应该创建一个新对象。下面的程序示范了这种做法：</p>
<p>import java.util.*;<br />
import java.text.*;</p>
<p>public class ThreeDates {<br />
public static void main(String[] args) {<br />
GregorianCalendar gc1 = new GregorianCalendar(2000, Calendar.JANUARY, 1);<br />
GregorianCalendar gc2 = gc1;<br />
GregorianCalendar gc3 = new GregorianCalendar(2000, Calendar.JANUARY, 1);<br />
//Three dates all equal to January 1, 2000</p>
<p>gc1.add(Calendar.YEAR, 1);<br />
file://gc1 and gc2 are changed</p>
<p>DateFormat df = DateFormat.getDateInstance();</p>
<p>Date d1 = gc1.getTime();<br />
Date d2 = gc2.getTime();<br />
Date d3 = gc3.getTime();</p>
<p>String s1 = df.format(d1);<br />
String s2 = df.format(d2);<br />
String s3 = df.format(d3);</p>
<p>System.out.println("gc1 is " + s1);<br />
System.out.println("gc2 is " + s2);<br />
System.out.println("gc3 is " + s3);<br />
}<br />
}</p>
<p>程序运行后，gc1和gc2被变成2001年（因为两个对象指向同一个Date，而Date已经被改变了）。对象gc3指向一个单独的Date，它没有被改变。<br />
计算复习日期<br />
在这节，你将看到一个依据现实世界的例子。这个详细的程序计算过去一个具体的日期。例如，你阅读这篇文章，你想要记住一个印象深刻的知识点。如果你没有照片一样的记忆力，你就要定期的复习这些新资料，这将帮助你记住它。关于复习系统，Kurt Hanks 和 Gerreld L. Pulsipher在他们的&lt; Five Secrets to Personal Productivity个人能力的5个秘密&gt;中有讨论，建议看过第一眼后马上回顾一下，然后是1天后，1个星期后，1个月后，3个月后，1年后。我的这篇文章，你要马上回顾一下，从现在算起，再就是明天，然后是1个星期，1个月，3个月，1年后。我们的程序将计算这些日期。<br />
这个程序非常有用的，它将是PIM(Personal Information Manager个人信息管理器)的一个组成部分，并将确定复习时间。在下面的程序中，getDates()方法对一个返回日期数组（复习日期）的电子软件很有用。另外，你可以返回单独的一个日期，使用getFirstDay(),getOneDay(),getOneWeek(),getOnMonth ()和getOneYear().当时间范围超出这个PIM的ReviewDates的计算范围时ReviewDates类演示了怎样计算时间段。现在，你可以容易的修改它用来处理你需要的时间段，象图书馆借书，录影带租赁和抵押计算。首先，ReviewDates类显示在下面：</p>
<p>import java.util.*;<br />
import java.text.*;</p>
<p>public class ReviewDates {<br />
private GregorianCalendar firstDay, oneDay, oneWeek, oneMonth, oneQuarter, oneYear;<br />
final int dateArraySize = 6;</p>
<p>ReviewDates(GregorianCalendar gcDate) {<br />
int year = gcDate.get(GregorianCalendar.YEAR);<br />
int month = gcDate.get(GregorianCalendar.MONTH);<br />
int date = gcDate.get(GregorianCalendar.DATE);</p>
<p>firstDay = new GregorianCalendar(year, month, date);<br />
oneDay = new GregorianCalendar(year, month, date);<br />
oneWeek = new GregorianCalendar(year, month, date);<br />
oneMonth = new GregorianCalendar(year, month, date);<br />
oneQuarter = new GregorianCalendar(year, month, date);<br />
oneYear = new GregorianCalendar(year, month, date);</p>
<p>oneDay.add(GregorianCalendar.DATE, 1);<br />
oneWeek.add(GregorianCalendar.DATE, 7);<br />
oneMonth.add(GregorianCalendar.MONTH, 1);<br />
oneQuarter.add(GregorianCalendar.MONTH, 3);<br />
oneYear.add(GregorianCalendar.YEAR, 1);<br />
}</p>
<p>ReviewDates() {<br />
this(new GregorianCalendar());<br />
}</p>
<p>public void listDates() {<br />
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG); <br />
Date startDate = firstDay.getTime();<br />
Date date1 = oneDay.getTime();<br />
Date date2 = oneWeek.getTime();<br />
Date date3 = oneMonth.getTime();<br />
Date date4 = oneQuarter.getTime();<br />
Date date5 = oneYear.getTime();</p>
<p>String ss = df.format(startDate);<br />
String ss1 = df.format(date1);<br />
String ss2 = df.format(date2);<br />
String ss3 = df.format(date3);<br />
String ss4 = df.format(date4);<br />
String ss5 = df.format(date5);</p>
<p>System.out.println("Start date is " + ss);<br />
System.out.println("Following review dates are:");<br />
System.out.println(ss1);<br />
System.out.println(ss2);<br />
System.out.println(ss3);<br />
System.out.println(ss4);<br />
System.out.println(ss5);<br />
System.out.println();<br />
}</p>
<p>public GregorianCalendar[] getDates() {<br />
GregorianCalendar[] memoryDates = new GregorianCalendar[dateArraySize];<br />
memoryDates[0] = firstDay;<br />
memoryDates[1] = oneDay;<br />
memoryDates[2] = oneWeek;<br />
memoryDates[3] = oneMonth;<br />
memoryDates[4] = oneQuarter;<br />
memoryDates[5] = oneYear;<br />
return memoryDates;<br />
}</p>
<p>public GregorianCalendar getFirstDay() {<br />
return this.firstDay;<br />
}</p>
<p>public GregorianCalendar getOneDay() {<br />
return this.oneDay;<br />
}</p>
<p>public GregorianCalendar getOneWeek() {<br />
return this.oneWeek;<br />
}</p>
<p>public GregorianCalendar getOneMonth() {<br />
return this.oneMonth;<br />
}</p>
<p>public GregorianCalendar getOneQuarter() {<br />
return this.oneQuarter;<br />
}</p>
<p>public GregorianCalendar getOneYear() {<br />
return this.oneYear;<br />
}<br />
} </p>
<p>下面是使用ReviewDates类列出复习日期的例子程序：</p>
<p>import java.util.*;</p>
<p>public class ShowDates {<br />
public static void main(String[] args) {<br />
ReviewDates rd = new ReviewDates();<br />
rd.listDates();</p>
<p>GregorianCalendar gc = new GregorianCalendar(2001, Calendar.JANUARY, 15);<br />
ReviewDates jan15 = new ReviewDates(gc);<br />
jan15.listDates();<br />
}<br />
}</p>
<p><br />
总结</p>
<p>这篇文章介绍了关于日期处理的3个重要的类：Date,DateFormat,GregorianCalendar.这些类让你创建日期，转换成字符串，和计算日期基本元素。处理Java中的日期问题，这篇文章只是冰山一角。可是，我在这里介绍的类和方法不仅仅是你学习高级技术的跳板，这些类和方法本身就可以处理很多通常的日期相关的任务。</p>
<img src ="http://www.blogjava.net/justBlue/aggbug/227362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justBlue/" target="_blank">justBlue</a> 2008-09-06 08:41 <a href="http://www.blogjava.net/justBlue/articles/227362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]关于软件开发的21条“规律”</title><link>http://www.blogjava.net/justBlue/articles/227101.html</link><dc:creator>justBlue</dc:creator><author>justBlue</author><pubDate>Thu, 04 Sep 2008 23:47:00 GMT</pubDate><guid>http://www.blogjava.net/justBlue/articles/227101.html</guid><wfw:comment>http://www.blogjava.net/justBlue/comments/227101.html</wfw:comment><comments>http://www.blogjava.net/justBlue/articles/227101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justBlue/comments/commentRss/227101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justBlue/services/trackbacks/227101.html</trackback:ping><description><![CDATA[这些规律两年前在一论坛上看到过，这几天在一linux社区上重现，发现体会不一样了，发现我认同的多了。<br />
全文如下：<br />
每个有经验的程序员都知道，在软件开发中存在着一些规律。但是，破坏了这些规律并不会得到惩罚，相反会有些许奖励。<br />
1. 任何一个程序一旦发布就意味着它已经过时了。<br />
2. 让需求根据程序调整往往要比让程序根据需求调整来得容易。<br />
3. 如果一个程序是有用的，那它必将被改变。<br />
4. 如果一个程序是无用的，那它必须被注释。<br />
5. 在任何一个程序里只有10%的代码会被执行。<br />
6. 软件会无限扩张以占用所有的系统资源。<br />
7. 任何有价值的程序都会包含至少一个错误。<br />
8. 一个演示版的程序完美无瑕的几率和关注它的人数成反比，最终要花费的金钱的数量是原数量的平方。<br />
9. 一个程序的致命错误要到其发布至少半年后才会被发现。<br />
10. 不可检测的错误是无穷无尽的，并以各种形式存在；相反，可检测的错误从理论上讲是有限的。<br />
11. 随着时间的推移，修正某个错误所需花费的精力会成指数级增加。<br />
12. 程序的复杂度会一直增长，直到超出维护它的程序员的能力为止。<br />
13. 一段你自己写的代码如果几个月不曾看过，那很有可能其他人也会写出相同的代码。<br />
14. 在每个小程序里都会有一大段代码想要破壳而出。<br />
15. 你越快开始编写代码，就会需要越长的时间。<br />
16. 一个项目如果没有精心策划，那将需要比预期多出两倍的时间来完成它；相反的，如果项目是精心策划过的，就只需要多出一倍的时间。<br />
17. 向一个落后于进度的项目添加程序员只会让项目更加落后于进度。<br />
18. 一个程序的完成程度总在90%到95%之间。<br />
19. 如果你让一团糟糕的代码自动化，那你就会得到一团自动化的糟糕的代码。<br />
20. 建立一个连傻瓜都会使用的程序，而只有一个傻瓜才想要去使用它。<br />
21. 用户直到他们使用了一个程序之后才知道他们究竟想要的是什么。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/justBlue/aggbug/227101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justBlue/" target="_blank">justBlue</a> 2008-09-05 07:47 <a href="http://www.blogjava.net/justBlue/articles/227101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开博了！</title><link>http://www.blogjava.net/justBlue/archive/2008/09/05/227100.html</link><dc:creator>justBlue</dc:creator><author>justBlue</author><pubDate>Thu, 04 Sep 2008 23:36:00 GMT</pubDate><guid>http://www.blogjava.net/justBlue/archive/2008/09/05/227100.html</guid><wfw:comment>http://www.blogjava.net/justBlue/comments/227100.html</wfw:comment><comments>http://www.blogjava.net/justBlue/archive/2008/09/05/227100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/justBlue/comments/commentRss/227100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/justBlue/services/trackbacks/227100.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 博客开通了，可以写一些技术文章了，有好的文章我会转过来，共同分享&nbsp;&nbsp;<a href='http://www.blogjava.net/justBlue/archive/2008/09/05/227100.html'>阅读全文</a><img src ="http://www.blogjava.net/justBlue/aggbug/227100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/justBlue/" target="_blank">justBlue</a> 2008-09-05 07:36 <a href="http://www.blogjava.net/justBlue/archive/2008/09/05/227100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>