java时间处理的诡异问题

本文涉及的产品
云解析DNS,个人版 1个月
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:

  最近做了一些文本解析的工作,但是被java给恶心到了。java时间处理非常混乱,制造了不少不必要的麻烦。所以特别记录下来,以免以后再遇到同样的问题。

       首先就是月份的解析。在日期和年份都和正常理解完全一样的情况下,不知道java的开发人员怎么想的,突然来了个不一样的月份解析。java的月份是从0-11的,也就是说你得到的月份其实是要减一才能得到正确的月份。代码如下:

 
  1. Calendar calendar = Calendar.getInstance();  
  2. calendar.set(Calendar.MONDAY, Integer.parseInt(month- 1); 

       然后我就用Calendar自带的解析吧,也遇到不顺利的事情。遇到带有PM这样的就无法解析了,找了半天才发现原来需要加上地区信息,其实就是解析语言含义,比如用“下午”就用“Locale.CHINA”。下面给一个简单的测试用例:

 
  1. import java.text.ParseException;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Calendar;  
  4. import java.util.GregorianCalendar;  
  5. import java.util.Locale;  
  6.  
  7. public class TimeParseTest {  
  8.    
  9.  private static final String time = "12:08PM GMT+08:00 1/11";  
  10.  private final static SimpleDateFormat sdf = new SimpleDateFormat("K:mma z MM/dd", Locale.US);  
  11.  
  12.  public static void main(String[] args) {  
  13.   try {  
  14.    Calendar calendar = new GregorianCalendar();  
  15.    // 解析时间文本  
  16.    calendar.setTime(sdf.parse(time));  
  17.    // 设置年份为当前年份  
  18.    calendar.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR));  
  19.    System.out.println(calendar.getTime());  
  20.   } catch (ParseException e) {  
  21.    e.printStackTrace();  
  22.   }  
  23.  }  
  24.  
  25. }  

本文转自passover 51CTO博客,原文链接:http://blog.51cto.com/passover/425919,如需转载请自行联系原作者

相关文章
|
2月前
|
安全 Java Unix
Java语言中的日期与时间处理技术
Java语言中的日期与时间处理技术
|
1月前
|
Java
java中强大的时间处理工具:Calendar类(日历类)
`Calendar`类是Java中用来处理日期和时间的类,提供了许多属性来获取日期和时间的不同部分,如年、月、日、小时等。`Calendar`的常用属性包括`YEAR`(年)、`MONTH`(月)、`DATE`/`DAY_OF_MONTH`(日)、`DAY_OF_YEAR`(一年中的第几天)、`DAY_OF_WEEK_IN_MONTH`(一月中第几个星期)、`DAY_OF_WEEK`/`WEEK_OF_MONTH`(星期)等。
18 0
|
2月前
|
安全 Java API
Java日期与时间处理详解
Java日期与时间处理详解
29 1
Java(九):LocalDate和LocalDateTime时间处理
Java(九):LocalDate和LocalDateTime时间处理
164 0
|
Java API 索引
Java小白踩坑录 - Java时间处理的前生今世
Java小白踩坑录 - Java时间处理的前生今世
113 0
Java小白踩坑录 - Java时间处理的前生今世
|
存储 安全 Java
Java 中的日期与时间处理!
Java 中的日期与时间处理!
184 0
Java 中的日期与时间处理!
|
Java API
关于Java中的时间处理,你真的了解吗?
GitHub 2.4k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 2.4k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 2.4k Star 的Java工程师成神之路 ,真的确定不来了解一下吗? 之前在我的知识星球的直面Java板块中,给粉丝们出了这样一道题: 在Java中,如何获取不同时区的当前时间? 你知道这道题的正确答案应该如何回答吗?背后的原理又是什么呢? 然后,紧接着,我又提出了以下问题: 为什么以下代码无法得到美国时间。
2158 0
|
Java
最全的java时间处理工具类
package com.momo.util;import java.io.Serializable;import java.text.ParseException;import java.text.
920 0