控制台程序。

java.util包中含有相当多的类涉及日期和时间,包括Date类、Calendar类和GregorianCalendar类。

Date类对象其实定义了精确到毫秒的时刻,从1970年1月1日00:00:00时(GMT,格林威治时间)开始算起。因为是相对于特定的时刻,所以也对应着日期。

Calendar类是GregorianCalendar的基类,表示每个人都习惯使用的日/月/年日历,另外还提供了从Date对象中获取日、月和年信息的方法。

DateFormat类是抽象类,可用于创建Date对象的有意义的字符串表示。但这个类不在java.util包中,而在java.text包中定义。日期和时间有4中标准表示格式,它们用DateFormat类中定义的常量标识:SHORT/MEDIUM/LONG/FULL.

java.util.Locale对象标识了国家、区域或语言特有的信息。可以为特定的国家、语言、国家和语言以及国家和语言的变体定义Locale对象。

DateFormat类是抽象的,所以不能直接创建类的对象,但可以使用类中定义的静态方法来获得DateFormat对象,这些方法返回DateFormat类型的值。DateFormat对象封装了一个Locale和一个整数日期样式,这个样式有DateFormat类中定义的常量定义,即前面的SHORT、MEDIUM、LONG或FULL。

可以创建DateFormat实例,把Date对象格式化为时间、日期或日期和时间。创建各种DateFormat对象的静态方法有:返回时间格式化器的getTimeInstance()、返回日期格式化器的getDateInstance()以及返回格式化日期和时间的getDateTimeInstance()。

为指定的国家、样式和将要格式化的数据种类(日期、时间或两者)创建DateFormatd对象后,就准备好了从Date对象生成字符串。

只需要把Date对象传送给DateFormat对象的format()方法即可。例如:

Date today = new Date();

DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,Locale.US);

String formatted = fmt.format(today);

第一条语句创建了一个Date对象,表示执行Date构造函数时的时刻。

第二条语句创建了一个DateFormat对象,可以格式化Date对象封装的日期和时间。这个例子把日期和时间的格式化样式都指定为DateFormat类中的FULL常量,这样就为日期和时间提供了最详细的信息。第三个参数Locale.US决定了格式化应满足美国的要求。Locale类定义了用于其他主要国家和语言的常量。

第三条语句把fmt对象的format()方法应用于Date对象。

执行这些语句后,字符串变量formatted就包含了创建Date对象today时的完整日期和时间。

 // Trying date formatting
import java.util.Locale;
import java.text.DateFormat;
import java.util.Date;
import static java.util.Locale.*; // Import names of constants
import static java.text.DateFormat.*; // Import names of constants public class TryDateFormats {
public enum Style {FULL, LONG, MEDIUM, SHORT} public static void main(String[] args) {
Date today = new Date();
Locale[] locales = {US, UK, GERMANY, FRANCE}; // Output the date for each locale in four styles
DateFormat fmt = null;
for(Locale locale : locales) {
System.out.println("\nThe Date for " + locale.getDisplayCountry() + ":");
for (Style style : Style.values()) {
fmt = DateFormat.getDateInstance(style.ordinal(), locale);
System.out.println( " In " + style + " is " + fmt.format(today));
}
}
}
}

输出在嵌套的for循环中生成。外层循环迭代国家,内层循环是基于集合的for循环,为Styles枚举中的每个国家迭代样式。ordinal()方法返回值在枚举中的序号。使用序号把样式指定为getDateInstance()方法的第一个参数。

Java基础之一组有用的类——生成日期和时间(TryDateFormats)的更多相关文章

  1. Java基础之一组有用的类——使用公历日历(TryCalendar)

    控制台程序. 公历是西方使用的日历,用GregorianCalendar类的对象来表示.GregorianCalendar对象封装了时区信息.日期和时间数据.GregorianCalendar对象有7 ...

  2. Java基础之一组有用的类——Observable和Observer对象(Horrific)

    控制台程序. Obserable类提供了一个有趣的机制,可以把类对象中发生的改变通知给许多其他类对象. 对于可以观察的对象来说,类定义中需要使用java.util.Observable类.只需要简单地 ...

  3. Java基础之一组有用的类——为标记定义自己的模式(ScanString)

    控制台程序. Scanner类提供了一种方式,用来指定如何识别标记.这需要使用next()方法的两个重载版本.其中的一个版本接受Pattern类型的参数.另一个版本接受String类型的参数,用来指定 ...

  4. Java基础之一组有用的类——使用Scanner对象(TryScanner)

    控制台程序. java.util.Scanner类定义的对象使用正则表达式来扫描来自各种源的字符输入,并把输入显示为各种基本类型的一系列标记或者显示为字符串. 默认情况下,Scanner对象读取标记时 ...

  5. Java基础之一组有用的类——使用正则表达式搜索子字符串(TryRegex)

    控制台程序. 正则表达式只是一个字符串,描述了在其他字符串中搜索匹配的模式.但这不是被动地进行字符序列匹配,正则表达式其实是一个微型程序,用于一种特殊的计算机——状态机.状态机并不是真正的机器,而是软 ...

  6. Java基础之一组有用的类——使用二叉树搜索算法搜索某个作者(TryBinarySearch)

    控制台程序. Arrays类中的binarySearch()静态方法使用二叉树搜索算法,在有序数组中查找包含给定值的元素.只有当数组的元素按升序方式排序时,该方法才是最有效的,否则就应在调用binar ...

  7. Java基础之一组有用的类——使用比较器对数组排序(TrySortingWithComparator)

    控制台程序. Arrays类中的sort()静态方法把传送为参数的数组元素按升序方式排序. 对于第一个参数类型是Object[]的sort()方法来说,可以传送任意类型的数组.如果使用sort()方法 ...

  8. Java基础之一组有用的类——使用正则表达式查找和替换(SearchAndReplace)

    控制台程序. 使用正则表达式执行查找和替换操作,只需要调用Matcher对象的find()方法,就可以调用appendReplacement()方法来替换匹配的子序列.在提供给方法的新StringBu ...

  9. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

随机推荐

  1. 以http形式启动uwsgi服务

    uwsgi yourfile.ini # 配置文件 [uwsgi] http = 127.0.0.1:3106 socket = 127.0.0.1:3006 chdir = /www/student ...

  2. 【翻译】CEDEC2013 BANDAI NAMCO 了解游戏格斗动画中的身体运动结构和原理

    CEDEC搬运工程开始~   这篇会议PPT的作者 元梅幸司曾经就职在TECMO参与开发了死或生2,3[ DEAD OR ALIVE],忍龙「NINJA GAIDEN」后来加入NAMCO(现在是BAN ...

  3. commandname+commandargument

    (一) CommandName:其实可以设置成一种动作,比如Select,Update,Delete,等操作.就是说CommandName是确定他到底引发的是哪一事件,如果CommandName的名字 ...

  4. 开放平台鉴权以及OAuth2.0介绍

    OAuth 2.0 协议 OAuth是一个开发标准,允许用户授权第三方网站或应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的内容. OAuth 2.0 ...

  5. 动态样式语言Less学习笔记

    介绍资料参见:http://www.bootcss.com/p/lesscss/ LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支 ...

  6. nginx高并发优化

    一、一般来说nginx 配置文件中对优化比较有作用的为以下几项: 1.  worker_processes 8; nginx 进程数,建议按照cpu 数目来指定,一般为它的倍数 (如,2个四核的cpu ...

  7. design the relations

    Computer Science An Overview _J. Glenn Brookshear _11th Edition A pivotal step in designing a relati ...

  8. linux C gcc -lm

    使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数 ...

  9. Oracle存储过程java 调用

    1.nest表组合成结果集,然后以游标变量的形式返回 --创建类型 create or replace package mytest is -- Author  : ADMINISTRATOR  -- ...

  10. JAVA缓存技术之EhCache

    最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...