Java中的时间和日期表示和计算(下)

论坛 期权论坛     
匿名小用户   2019-10-20 18:26   1007   0
<div class="article_content clearfix csdn-tracking-statistics" style="padding:0px;margin:0px;"><div class="markdown_views" style="padding:0px;margin:0px;font-family:'-apple-system', 'SF UI Text', Arial, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'WenQuanYi Micro Hei', sans-serif, SimHei, SimSun;"><p>转载请注明出处:<a data-token="0e94b83d2ba373fcae0b763e4e312974" href="http://blog.csdn.net/wl9739/article/details/51882913" rel="nofollow">http://blog.csdn.net/wl9739/article/details/51882913</a></p><p>在上篇文章<a data-token="016f87a6eed69ce2d52529bb72eb24bf" href="http://blog.csdn.net/wl9739/article/details/51839502" rel="nofollow">Java中的时间和日期(上)</a>里面,简单介绍了Java中的Date类,Calendar类以及用于格式化的SimpleDateFormater类。使用这些的时候我们会明显地感受到其中的不便之处,比如,Calendar类的月份是从0开始计数的;日期格式输出不够友好,很多情况下都需要使用SimpleDateFormater类来格式化;一些简单得日期计算也比较麻烦等等。所以就有了<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">joda-time</code>这种第三方库来简化java对于时间和日期的操作。为了改变这种情况,java 8中对时间和日期对处理就吸收了<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">joda-time</code>库的特性。那么新的时间日期处理会带来怎样的便捷呢?这便是本篇文章所要聊的内容。</p><h2 style="padding:0px;"><a></a>月份和星期的枚举类</h2><h3 style="padding:0px;"><a></a>Month</h3><p>在以前使用Java的时候,你一定痛恨了月份的表示和计算,最主要的原因就是因为一月份是从0开始计数的。而在Java 8中为了改变这一现状,增加了一个<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">Month</code>枚举类来表示月份。使用这个枚举类甚至还可以直接进行月份的加减运算!</p><ul style="list-style:none;"><li style="padding:0px;"><p>of(int month)<br>这是一个静态方法,用于创建一个<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">Month</code>对象。传入的参数当然是从1开始计数啦,1表示一月,12表示十二月。当传入的参数小于1或者大于12时,就会抛出异常。</p></li><li style="padding:0px;"><p>getValue()<br>返回该<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">Month</code>对象当前的值。一月份返回1,二月份返回2,依次类推。</p></li><li style="padding:0px;"><p>minus(long months)<br>这个是用来做月份的减法计算的。传入的参数表示你想在该<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">Month</code>对象的基础上减去几个月。如果是1月份减去2个月,返回的当然是11月份。</p></li><li style="padding:0px;"><p>plus(long months)<br>用来计算月份的加法。传入的参数表示你想在该<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">Month</code>对象的基础上增加几个月。比如12月加2个月就变成了二月份。</p></li><li style="padding:0px;"><p>maxLength(), minLength()和length(boolean leapYear)<br>用来获取<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">Month</code>对象表示的该月的日期数。其中,<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">length(boolean leapYear)</code>中的参数表示是否为闰年。其实这三个方法返回的结果在很多情况下都是一样的,返回的都是当月的日期数,30或者31。只有二月份除外,当<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">Month</code>对象表示二月份时,<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">maxLength()</code>和<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">length(true)</code>返回29,<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">minLength()</code>和<code style="font-size:14px;line-height:22px;padding:4px 2px 0px;">length(false)</code>返回28。</p></li></ul><p>下面用代码来说明上述方法的使用:</p><pre class="blockcode" style="font-size:14px;line-height:22px;"><code class="language-java hljs has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span>(String[] args) {
    System.out.println(Month.DECEMBER);         <span class="hljs-comment">// DECEMBER</span>
    System.out.println(Month.of(<span class="hljs-number">2</span>));            <span class="hljs-comment">// FEBRUARY</span>

    Month month = Month.FEBRUARY;        
    System.out.println(month.getValue());       <span class="hljs-comment">// 2</span>
    System.out.println(month.minus(<span class="hljs-number">3</span>));         <span class="hljs-comment">// NOVEMBER</span>
    System.out.println(month.plus(<span class="hljs-number">2</span>));          <span class="hljs-comment">// APRIL</span>
    System.out.println(month.length(<span class="hljs-keyword">false</span>));    <span class="hljs-comment">// 28</span>
    System.out.println(month.length(<span class="hljs-keyword">true</span>));     <span class="hljs-comment">// 29</span>
}</code></pre><ul class="pre-numbering"><li style="paddi
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:50
帖子:1079
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP