`

聊一聊java中date的使用

    博客分类:
  • java
阅读更多

     首先说下,我也是菜鸟,在使用java Date时,刚开始总有种有力使不上的的感觉,大多数时间我们使用Date其实就是在String和他之间转换来转换去的。为了能更好的使用这个东西,我很多时候会有这样的疑问:

     String s="1995年的3月那个流着血的18日";

     Date d=?;

我们该怎么样转化呢?正则?字符串解析?其实java提供了一个非常方便的让我们处理各种自定义日期格式的工具类

public abstract class DateFormat  extends Format

同时他有一个实现子类:SimpleDateFormat

 

SimpleDateFormat(String pattern)
          用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

这是他初始化的一个方法,其中的pattern可以使用自定义的日期格式,配合这标准的日期参数使用,感觉非常灵活好用,具体如下,自己体会,参数附录在最后。

 

其中的核心两个常用转换方法是:

public final String format(Date date)
将一个 Date 格式化为日期/时间字符串。

 

参数:
date - 要格式化为时间字符串的时间值。
返回:
已格式化的时间字符串。

public Date parse(String source)
           throws ParseException
从给定字符串的开始解析文本,以生成一个日期。该方法不使用给定字符串的整个文本。

有关日期解析的更多信息,请参阅 parse(String, ParsePosition) 方法。

 

参数:
source - 一个 String,应从其开始处进行解析。
返回:
解析字符串得到的 Date
抛出:
ParseException - 如果无法解析指定字符串的开始处。

 

 

 

 

 

 

具体用法如下:

package langtest;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  String string="1995年的3月那个流着血的18日";
  Date date=new Date();
  DateFormat dateFormat=new SimpleDateFormat("yyyy年的M月那个流着血的dd日");
  try {
   date=dateFormat.parse(string);
   System.out.println(date);
  } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  String string2=dateFormat.format(date);
  System.out.println(string2);
  
 }

}

另附上初始化SimpleDateFormat具体要用到的各个参数:

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

其中总容易被搞错的就是月份的M是大写的,而分钟数m则是小写的,参数上很多都蛮实用的,但是要注意大小写,

  • doc.rar (2.5 MB)
  • 下载次数: 93
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics