控制台程序。

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时的完整日期和时间。

 1 // Trying date formatting
 2 import java.util.Locale;
 3 import java.text.DateFormat;
 4 import java.util.Date;
 5 import static java.util.Locale.*;                                      // Import names of constants
 6 import static java.text.DateFormat.*;                                  // Import names of constants
 7
 8 public class TryDateFormats {
 9   public enum Style {FULL, LONG, MEDIUM, SHORT}
10
11   public static void main(String[] args) {
12     Date today = new Date();
13     Locale[] locales = {US, UK, GERMANY, FRANCE};
14
15     // Output the date for each locale in four styles
16     DateFormat fmt = null;
17     for(Locale locale : locales) {
18       System.out.println("\nThe Date for " + locale.getDisplayCountry() + ":");
19       for (Style style : Style.values()) {
20         fmt = DateFormat.getDateInstance(style.ordinal(), locale);
21         System.out.println( "  In " + style + " is " + fmt.format(today));
22       }
23     }
24   }
25 }

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

转载于:https://www.cnblogs.com/mannixiang/p/3439551.html

Java基础之一组有用的类——生成日期和时间(TryDateFormats)相关推荐

  1. java对象生成的时间_Java基础之一组有用的类——生成日期和时间(TryDateFormats)...

    控制台程序. java.util包中含有相当多的类涉及日期和时间,包括Date类.Calendar类和GregorianCalendar类. Date类对象其实定义了精确到毫秒的时刻,从1970年1月 ...

  2. Java基础学习——第十章 枚举类注解

    Java基础学习--第十章 枚举类&注解 一.枚举类(enum) 1. 枚举类的概念 枚举类:类的对象只有有限个,确定的 线程状态:创建.就绪.运行.阻塞.死亡 当需要定义一组常量时,强烈建议 ...

  3. Java基础语法(七)——类和对象

    文章目录 Java基础语法(七)--类和对象 一.类和对象的初步认识 二. 类和类的实例化 1.类的定义 2.实例化对象 3.如何使用类中的数据 三. 类的成员 1. 字段/属性/成员变量 (1)实例 ...

  4. java之进阶语法(Object类及日期时间类)

    一.关于Object类 (一)概述 java.lang.object类是java语言的根类,即是所有类的父类. 若一个类没有指定父类,那么默认继承自Object类 object类常用的方法有以下: - ...

  5. 【小家java】java8新特性之---全新的日期、时间API(JSR 310规范),附SpringMVC、Mybatis中使用JSR310的正确姿势

    [小家java]java5新特性(简述十大新特性) 重要一跃 [小家java]java6新特性(简述十大新特性) 鸡肋升级 [小家java]java7新特性(简述八大新特性) 不温不火 [小家java ...

  6. Matlab:生成日期与时间的序列

    生成日期与时间的序列 两个端点间已知步长的日期时间或持续时间值的序列 使用默认步长 指定步长 比较固定长度持续时间和日历持续时间的步长 整数步长 添加持续时间或日历持续时间以创建日期的序列 指定日期或 ...

  7. Java基础巩固(一)类,接口,枚举,常用API,集合,泛型,正则,数据结构

    一.static.final.权限关键字,代码块,接口,枚举 1 关键字 2 代码块 3 接口 4 枚举 idea快捷键 shift + enter 换行 ctrl + Alt + shift + U ...

  8. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础--数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  9. 【Java基础】 随机数的3种生成方法

    [Java基础]之3种随机数的生成方法 目录 前言: 第一种:new Random(): 第二种:Math.random(); 第三种:currentTimeMillis(): 前言: 生成指定范围内 ...

最新文章

  1. Codeforces 446C —— DZY Loves Fibonacci Numbers(线段树)
  2. 设计模式(简单工厂模式)
  3. python3.7.2安装-Centos7.6,安装python3.7.2
  4. 阿里云MVP第14期全球发布:云时代2.0,遇见科技追梦者!
  5. 论文浅尝 | 动态词嵌入
  6. 使用lambdaquery() 报空指针异常_Java 14 来势汹汹,这回让空指针无处遁形!!
  7. vue axios封装以及登录token过期跳转问题
  8. 工程linux下创建svn仓库目录结构
  9. mysql连接数过多
  10. Python3 字节码详解
  11. linux下的ftp命令详解,Linux FTP命令详解
  12. 声散射 matlab,一种基于声波散射的高强度聚焦超声声场测量方法与流程
  13. GBase 8a MPP灾备方案
  14. 赢在测试2:中国软件测试专家访谈录
  15. 博弈论(Game Theory)
  16. 电视购物中心小型呼叫中心系统二次开发
  17. Qt on Mac 开发之 读取苹果系统OSX上的plist资源文件
  18. 什么因素让唐僧是一个领导,而孙悟空只是一个打工者呢?
  19. 思维导图(1-20)
  20. 6个高效办公的Excel小技巧,学会让你高效办公

热门文章

  1. 关于Django部分
  2. python工具之myql数据库操作
  3. JConsole监控远程Tomcat服务器
  4. 定义根目录, window格式 转化为linux格式
  5. HDU1040-As Easy As A+B
  6. 移动master 数据库
  7. MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功
  8. bd3.2 Python高级
  9. XtraBackup出现 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
  10. protobuf生成