Java中字符串与日期之间的转换

  项目过程中,经常遇到需要字符串格式的日期和Date类型的日期之间的相互转换。使用SimpleDateFormat类,可以方便完成想要的转换。

  SimpleDateFormat能够实现本地化的时间格式化及转换。从选定一个自定义的模式(pattren)开始,模式由已经定义好的 ‘A‘ to ‘Z‘‘a‘ to ‘z‘字母组成,也可以在模式中引入文本,但要使用’(单括号)括住。下图就是已经定义好的模式字母表:

Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 199696
Y Week year Year 200909
M Month in year Month JulyJul07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day name in week Text TuesdayTue
u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard TimePSTGMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08-0800-08:00

  在一个模式中,模式字母可以重复,不同数量的字母代表不同的意思:

  1. text类型:格式化时,如果模式字母数量大于等于4,则使用完整格式表示(EEEE表示要将星期名字格式化为非缩写如Monday);转换时,结果不受字母数量的影响,都接受。
  2. number类型:格式化时,模式字母的重复次数就是格式化后最小位数,不够的用0填充(如"dddd"表示将日期格式化为4为数字,但日期最大为2为,所以导致高两位的数字被0填充,0011,表示11日);转换时:同格式化类似。
  3. Month类型:格式化时:如果模式字母重复次数大于或等于3,则被解释为text类型(July,Jul等),否则就解释为数字型。转换时:模式要和被转换的字符串对应,例如月份"12"对应的模式为"MM"或者"M",但是不能为"MMM",除非字符串为"OCT"或者"October";

  下面看看几个应用:

Long now = System.currentTimeMillis();
SimpleDateFormat sdf2 = new SimpleDateFormat("MM ddddddddddd,yyyy EEEE");
System.out.println(sdf2.format(now));输出:07 00000000031,2014 星期四 //日数的格式化模式过长,高位用0填充,星期为中文表示,默认情况下,

Long now = System.currentTimeMillis();SimpleDateFormat sdf2 = new SimpleDateFormat("MMMM dd,yyyy EEEE",Locale.US);System.out.println(sdf2.format(now));输出:July 31,2014 Thursday //指定地区为US,则以US格式输出,MMMM表示月份为完整文本类型

转换:

String dateString = "2000,October 22 10:10:11";SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MMMM dddd HH:mm:ss",Locale.ENGLISH);Date d = sdf.parse(dateString);System.out.println(d.toString());输出:Sun Oct 22 10:10:11 CST 2000
String dateString = "2000,October 22 10:10:11";SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MM dddd HH:mm:ss",Locale.ENGLISH);Date d = sdf.parse(dateString);System.out.println(d.toString());
输出:不能转换,因为被转换的字符串的月份为完整文本类型,模式也要为"MMMM"
String dateString = "2000,10 22 10:10:11";SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MM dddd HH:mm:ss",Locale.ENGLISH);Date d = sdf.parse(dateString);System.out.println(d.toString());
输出:Sun Oct 22 10:10:11 CST 2000 //月份为数字,模式对应为少于3为的”MM“,
String dateString = "2000,10 22 10:10";SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MM dddd HH:mm:ss",Locale.ENGLISH);Date d = sdf.parse(dateString);System.out.println(d.toString());
输出:不能转换,因为被转换的字符串没有秒的数字,但模式包含了秒,无法确定秒为多少。
String dateString = "2000,10 22 10:10:11";SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MM dddd HH:mm",Locale.ENGLISH);Date d = sdf.parse(dateString);System.out.println(d.toString());
输出:Sun Oct 22 10:10:00 CST 2000 //模式没有指定秒,但是转换字符串有,但不影响转换,只是结果的秒为0;

String dateString = "2000,十月 22 10:10:11";        SimpleDateFormat sdf = new SimpleDateFormat("yyyy,MMM dddd HH:mm",Locale.PRC);Date d = sdf.parse(dateString);System.out.println(d.toString());输出:Sun Oct 22 10:10:00 CST 2000 //注意被转换的字符串包含了中国的月份表示,SimpleDateFormat实例也要指明地区为中国,否则转换失败

String dateString = "2000,十月 22 10:10:SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm",Locale.PRC);Date d = sdf.parse(dateString);System.out.println(d.toString());输出:不能转换,不转换的字符串日期格式和模式不匹配,而且月份模式字母重复次数要大于或等于3
String dateString = "2000/十月/22 10:10:SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MMM/dd HH:mm",Locale.PRC);Date d = sdf.parse(dateString);System.out.println(d.toString());
输出:Sun Oct 22 10:10:00 CST 2000

Java中字符串与日期之间的转换,布布扣,bubuko.com

时间: 2024-08-02 06:59:55

Java中字符串与日期之间的转换的相关文章

Java中字节与对象之间的转换

近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOutputStream两个输出流,以及ByteArrayInputStream和ObjectInputStream两个输入流. 废话不多说了,直接上代码吧! /** * @FileName: ByteToObject.java * @Package:com.test * @Description: T

JAVA中list,set,数组之间的转换详解

JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.collections.CollectionUtils; String[] strArray = {"aaa", "bbb", "ccc"};    List strList = new ArrayList();    Set strSet = new Ha

java中字符串与数字的互相转换

import java.text.DecimalFormat; /* * String类中本身提供方法可以将几乎所有的基本类型转换为String类型 * sysout alt+/ 可以直接显示System.out.println() */public class test { public static void main(String[] args) { // 数字转换为字符串 double d=12.25; String str=String.valueOf(d); System.out.p

C/C++中字符串与数字之间的转换

主要有两种方式:C 中能够使用 sprintf 将数字转为字符数组,sscanf 将字符数组转为数字:而在 C++ 中不仅能够使用 C 中的方法,还能够使用 stringstream 实现字符串与数字间的转换. #include "iostream" #include "string" #include "sstream" #include "cstdio" using namespace std; string num2st

Qt中字符串和数值之间的转换

来自<Qt5.9 C++开发指南> 普通数值和字符串之间的转换 一.从字符串转换为数值 QString类从字符串转换为整数的函数有: int QString::toInt(bool *ok = Q_NULLPTR, int base = 10) const long QString::toLong(bool *ok = Q_NULLPTR, int base = 10) const short QString::toShort(bool *ok = Q_NULLPTR, int base =

Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换

基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱和拆箱呢?我们分别来看下 装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱 拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱 下面的代码的例子演示了装箱与拆箱的过程: 结果为: 1 public class HelloWorld { 2 pub

SqlServer中字符串和日期类型的转换

SQL Server Date 函数 定义和用法 CONVERT() 函数是把日期转换为新数据类型的通用函数. CONVERT() 函数可以用不同的格式显示日期/时间数据. 语法 CONVERT(data_type(length),data_to_be_converted,style) data_type(length) 规定目标数据类型(带有可选的长度).data_to_be_converted 含有需要转换的值.style 规定日期/时间的输出格式. 可以使用的 style 值: 实例 下面

Java中的时间日期处理

程序就是输入——>处理——>输出.对数据的处理是程序员需要着重注意的地方,快速.高效的对数据进行处理时我们的追求.其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理方式进行简单的解析,为自己以后的学习做一个备忘,也为初学者做一个借鉴. 时间,英文Time:日期,英文Date:日历,英文Calendar.Java中注重语义化,也是用以上的名称对时间日期函数和相关类进行命名. 我们将以Java自带的时间日期类和其中的处理函数进行分析. 一.与时间日期有关的类. java.u

java中字符串String 转 int(转)

java中字符串String 转 int String -> int s="12345"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法:i=Integer.valueOf(s).intValue(); 这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢? int -> String int i=12345; String s=""; 第一种方法:s=i+""; 第二种方法:s=