一、DateFormat

java.text.DateFormat

使用 getDateInstance 来获取该国家/地区的标准日期格式。另外还提供了一些其他静态工厂方法。使用 getTimeInstance 可获取该国家/地区的时间格式。使用 getDateTimeInstance 可获取日期和时间格式。可以将不同选项传入这些工厂方法,以控制结果的长度(从 SHORT 到 MEDIUM 到 LONG 再到 FULL)。确切的结果取决于语言环境,但是通常:

  • SHORT 完全为数字,如 12.13.52 或 3:30pm
  • MEDIUM 较长,如 Jan 12, 1952
  • LONG 更长,如 January 12, 1952 或 3:30:32pm
  • FULL 是完全指定,如 Tuesday、April 12、1952 AD 或 3:30:42pm PST。

如果愿意,还可以在格式上设置时区。如果想对格式化或解析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法所获取的 DateFormat 强制转换为 SimpleDateFormat。这适用于大多数国家/地区;只是要记住将其放入一个 try 代码块中,以防遇到特殊的格式。

使用当地时区
Date date = new Date();
//日期格式,精确到日 2017-4-16
DateFormat df1 = DateFormat.getDateInstance();
System.out.println(df1.format(date)); //可以精确到秒 2017-4-16 12:43:37
DateFormat df2 = DateFormat.getDateTimeInstance();
System.out.println(df2.format(date)); //只显示出时时分秒 12:43:37
DateFormat df3 = DateFormat.getTimeInstance();
System.out.println(df3.format(date)); //显示日期,周,上下午,时间(精确到秒)
//2017年4月16日 星期日 下午12时43分37秒 CST
DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(df4.format(date)); //显示日期,上下午,时间(精确到秒)
//2017年4月16日 下午12时43分37秒
DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
System.out.println(df5.format(date)); //显示日期,上下午,时间(精确到秒)
//2017年4月16日 下午12时43分37秒
DateFormat df5_1 = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.CHINA);
System.out.println(df5_1.format(date));
//显示日期,上下午,时间(精确到分) 17-4-16 下午12:43
DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
System.out.println(df6.format(date)); //显示日期,时间(精确到秒) 2017-4-16 12:43:37
DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
System.out.println(df7.format(date));

二、 SimpleDateFormat

java.text.SimpleDateFormat

定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y Year 199696
M 年中的月份 Month JulyJul07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text TuesdayTue
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 TimePSTGMT-08:00
Z 时区 RFC 822 time zone -0800

实例参数

日期和时间模式 结果
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700

代码结果

Date d = new Date();
/* h 1-12输出格式: 2017-04-16 01:01:22 */
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String s = format1.format(d);
System.out.println(s);
/* H 0-23输出格式:2017-04-16 13:01:22*/
DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
s = format2.format(d);
System.out.println(s); /* K 0-11输出格式:2017-04-16 01:01:22 */
DateFormat format3 = new SimpleDateFormat("yyyy-MM-dd KK:mm:ss");
s = format3.format(d);
System.out.println(s); /* k 1-24输出格式: 2017-04-16 13:01:22 */
DateFormat format4 = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
s = format4.format(d);
System.out.println(s); /* 输出格式: 20170416010122 */
DateFormat format5 = new SimpleDateFormat("yyyyMMddhhmmss");
s = format5.format(d);
System.out.println(s);

常用方法


parse

public Date parse(String texts)
解析字符串的文本,生成 Date

此方法试图解析文本。如果解析成功,并返回解析得到的日期。更新后的 pos 可以用来指示下次调用此方法的起始点。如果发生错误,并且返回 null。

指定者:
类 DateFormat 中的 parse
参数:
text - 应该解析其中一部分的 String
 
返回:
从字符串进行解析的 Date。如果发生错误,则返回 null。
抛出:
NullPointerException - 如果 text 为 null。
另请参见:
DateFormat.setLenient(boolean)

parse

public Date parse(String text,
ParsePosition pos)
解析字符串的文本,生成 Date

此方法试图解析从 pos 给定的索引处开始的文本。如果解析成功,则将 pos 的索引更新为所用最后一个字符后面的索引(不必对直到字符串结尾的所有字符进行解析),并返回解析得到的日期。更新后的 pos 可以用来指示下次调用此方法的起始点。如果发生错误,则不更改 pos 的索引,并将 pos 的错误索引设置为发生错误处的字符索引,并且返回 null。

指定者:
类 DateFormat 中的 parse
参数:
text - 应该解析其中一部分的 String
pos - 具有以上所述的索引和错误索引信息的 ParsePosition 对象。
返回:
从字符串进行解析的 Date。如果发生错误,则返回 null。
抛出:
NullPointerException - 如果 text 或 pos 为 null。
另请参见:
DateFormat.setLenient(boolean)

format

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

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

天津雍博科技有限责任公司

欢迎大家访问www.yongbosoft.com ,崇尚技术,为您提供完美产品,优质服务!

java中Date与DateFormat的格式输出的更多相关文章

  1. java中如何按一定的格式输出时间, 必须给出例子

    题目2: 按一定的格式输出时间 import java.util.*;import java.text.SimpleDateFormat;public class Test {    public s ...

  2. Java中Date各种相关用法

    Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...

  3. Java中Date和Calender类的使用方法

    查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

  4. Java中Date类型详解

    一.Date类型的初始化 1. Date(int year, int month, int date); 直接写入年份是得不到正确的结果的. 因为java中Date是从1900年开始算的,所以前面的第 ...

  5. PAT——不吉利的日期(java中date和Calendar使用)

    题目描述 在国外,每月的 13 号和每周的星期 5 都是不吉利的.特别是当 13 号那天恰好是星期 5时,更不吉利. 现在给你一个年份,请你从小到大依次输出当年所有13 号是星期 5 的月份. 输入描 ...

  6. Java中Date()类 日期转字符串、字符串转日期的问题(已解决)

    Java中Date()类 日期转字符串.字符串转日期的问题 今天在写东西的时候突然发现一个问题,就是先new 一个Date()然后将生成的值转为字符串, 然后再将转换后的字符串再次用new Date( ...

  7. Java基础(37):Java中日期的显示与格式定值----Date与SimpleDateFormat的试用

    使用 Date 和 SimpleDateFormat 类表示时间 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取 ...

  8. [转载]java中Date,SimpleDateFormat

    一.Java中的日期概述: 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题. 在Java ...

  9. Oracle数据库date类型与Java中Date的联系与转化

    以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助.new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前 ...

随机推荐

  1. python 常见问题

    C:\Users\user\AppData\Local\Programs\Python\Python36\Scripts\ C:\Users\user\AppData\Local\Programs\P ...

  2. LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全

    本文以 Windows 7 64 位为环境,go1.4.2.windows-amd64 和 liteidex27.2.1.windows-qt5 为例. 成功搭建开发环境后,发现 LiteIDE 没有 ...

  3. 使用Genymotion模拟器调试出现INSTALL_FAILED_CPU_ABI_INCOMPATIBLE错误的解决办法

    如果遇到下面这种错误: 点击下载Genymotion-ARM-Translation.zip 百度云连接:http://pan.baidu.com/s/1o6ifjMM 将你的虚拟器启动起来,将下载好 ...

  4. mysql 5.5.x zip直接解压版 报1076

    到官网下载mysql-5.5.10-win32.zip,然后将mysql解压到任意路径,如:C:\mysql-5.5.10-win32 打开计算机->属性->高级系统设置->环境变量 ...

  5. Database数据库切片模式

    数据库切片模式关注的实现水平伸缩.切分是从单个数据库到平分数据访问两个或更多数据库切片.每个切片有和原始数据库相同的Schema.大多数据分布在每个切片每一行.从切片合并起来的数据和原始数据库一样.切 ...

  6. java 自动化测试平台构建思想

    很多人迷信于自动化测试平台,认为这玩意是万能的,对于测试人员,不需要写代码,只需要在平台上选择一下,输入一点参数,就能达到测试的目的.想法是不错的,但关键在于实现这个平台的过程,这个就需要一个WEB开 ...

  7. mechanize (1)

    最近看的关于网络爬虫和模拟登陆的资料,发现有这样一个包 mechanize ['mekə.naɪz]又称为机械化的意思,确实文如其意,确实有自动化的意思. mechanize.Browser and ...

  8. Linux深入理解Socket异常

    在各种网络异常情况的背后,TCP是怎么处理的?又是怎样把处理结果反馈给上层应用的?本文就来讨论这个问题.分为两个场景来讨论 建立连接时的异常情况 1 正常情况下 经过三次握手,客户端连接成功,服务端有 ...

  9. 让ASP.NET Web API支持$format参数的方法

    在不使用OData的情况下,也可以让ASP.NET Web API支持$format参数,只要在WebApiConfig里添加如下三行红色粗体代码即可: using System; using Sys ...

  10. [k8s]docker calico网络&docker cluster-store

    docker cluster-store选项 etcd-calico(bgp)实现docker夸主机通信 配置calico网络 - 启动etcd etcd --listen-client-urls h ...