当我们只需要一个日期时,或从系统取得,或从数据库查询,都可以放入一个Date对象。

当我们需要对Date进行详细分析,获取其中的年月日分秒各个部分的信息,用Calendar类。

当我们需要对一个字符串转成Date对象,或者想让一个Date对象按照我们预期的格式进行输出字符串时,

需要用DateFormat类或它的子类SimpleDateFormat

 
  
DateFormat format = DateFormat.getDateInstance(DateFormat.SHORT, Locale.SIMPLIFIED_CHINESE);
DateFormat format2 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.SIMPLIFIED_CHINESE);
DateFormat format3 = DateFormat.getDateInstance(DateFormat.LONG, Locale.SIMPLIFIED_CHINESE);
DateFormat format4 = DateFormat.getDateInstance(DateFormat.SHORT, Locale.ENGLISH);
DateFormat format5 = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.ENGLISH);
DateFormat format6 = DateFormat.getDateInstance(DateFormat.LONG, Locale.ENGLISH);
try {
System.out.println("format : " +format.format(new Date()));
System.out.println("format2 : "+format2.format(new Date()));
System.out.println("format3 : "+format3.format(new Date()));
System.out.println("format4 : "+format4.format(new Date()));
System.out.println("format5 : "+format5.format(new Date()));
System.out.println("format6 : "+format6.format(new Date())); } catch (Exception e) {
e.printStackTrace();
}
 

 
String dateString = "2013-02-12T12:22:33";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
System.out.println("simpleDate format " + simpleDateFormat.format(new Date()));
try {
System.out.println("simpleDate parse "+ simpleDateFormat.parse(dateString));
} catch (ParseException e) {
e.printStackTrace();
}
 

Calendar的使用:

Calendar本身是一个抽象类,不能直接实例化,但是Calendar类提供一个工厂方法,即getInstance来创建一个Calendar实例,通过setTime()设定一个Calendar内部的毫秒数,之后就可以对这个毫秒数进行分析,进而得到它的年月日信息。同时,我们也可以对Calendar直接设定年月日属性,从而获取对应的Date对象。

需要注意的是,Calendar的一月是从0开始的,即你设定月份为4时,其实是五月。

下面是一个Calendar的简单示例。

 
Date now = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(now);
calendar.get(Calendar.YEAR);
System.out.println("the year is "+calendar.get(Calendar.YEAR));
System.out.println("the month is "+calendar.get(Calendar.MONTH));
calendar.set(Calendar.YEAR, 2014);
calendar.set(Calendar.MONTH, 2);
calendar.set(Calendar.DAY_OF_MONTH, 12);
System.out.println("calendar date is "+calendar.getTime());
 

在讲到Calendar就不可避免的涉及到java的国际化问题和时区的问题。

(1) 国际化

Locale 表示地区,每一个Locale对象都代表了一个特定的地理、政治和文化地区。

你可以用如下代码看看你的系统默认地区。

 
Locale locale = Locale.getDefault();
locale.getCountry();
locale.getLanguage();
System.out.println("default locale is "+locale);
System.out.println("default country is "+locale.getCountry());
System.out.println("default language is "+locale.getLanguage());
 

2) 时区

在java中用java.util.TimeZone类来表示一个时区。每一个时区都一个id,可以利用TimeZone.getAvailableIDs()这个方法获取所有的id。

 
TimeZone timeZone = TimeZone.getDefault();
System.out.println("default time zone is "+ timeZone.getDisplayName());
 

Calendar的工厂构造方法

前面说到,Calendar是一个抽象类,提供了static的工厂构造方法来提供一个实例。

Calendar有多个的工厂构造方法:

 
public static Calendar getInstance()
{
return createCalendar(TimeZone.getDefault(), Locale.getDefault(Locale.Category.FORMAT));
}
public static Calendar getInstance(Locale aLocale)
{
return createCalendar(TimeZone.getDefault(), aLocale);
}
public static Calendar getInstance(TimeZone zone, Locale aLocale)
{
return createCalendar(zone, aLocale);
}
 

Calendar的实例构造最终都是调用了这个方法

 
private static Calendar createCalendar(TimeZone zone, Locale aLocale)
 

Date日期的更多相关文章

  1. js中转换Date日期格式

    在javascript中直接输出Date得到的结果是这样的: function date(){ var date = new Date(); alert(date); } 结果是:Mon Jun 15 ...

  2. js动态获取当前系统时间+js字符串转换为date日期对象

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. JavaScript的内置对象(Date日期+string字符串)基础语法总结

    1.Date日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 1)定义一个时间对象 : var Udate=new Date(); //注意:使用关键字new,Date()的首 ...

  4. JS 中 原生方法 (三) --- Date 日期

    本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道,真是羞耻悳boy 当然 本文阐述的主要类容 from MDN ( zh-cn ) D ...

  5. SpringMVC解决@ResponseBody返回Json的Date日期类型的转换问题

    在做项目的时候,发现后台把Date类型的属性以json字符串的形式返回,前台拿不到转换后的日期格式,始终响应回去的都是long类型时间戳. 查阅资料之后找到解决方法: 方法一(在springmvc的x ...

  6. js转换Date日期格式

    有时候做项目会用到js的date日期格式,因为Date()返回的格式不是我们需要的, Date()返回格式: Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间) 而我 ...

  7. JS内置对象-String对象、Date日期对象、Array数组对象、Math对象

    一.JavaScript中的所有事物都是对象:字符串.数组.数值.函数... 1.每个对象带有属性和方法 JavaScript允许自定义对象 2.自定义对象 a.定义并创建对象实例 b.使用函数来定义 ...

  8. Java Date 日期 时间 相关方法

    DateTools.java import java.text.SimpleDateFormat; import java.util.Date; /** * 日期操作类 */ public class ...

  9. Linux -- date 日期命令

    Linux -- date 日期命令 date 用法:date [选项]... [+格式] 以给定的格式显示当前时间,或是设置系统日期. 1.使用 date 命令查看当前日期或当前时间 [root@l ...

  10. javascript Date日期类

      四.Date日期类 迁移时间:2017年5月27日18:43:02 Author:Marydon (一)对日期进行格式化(日期转字符串) 自定义Date日期类的format()格式化方法 方式一: ...

随机推荐

  1. asp.net菜鸟到中级程序员的飞跃 --30本好书点评

    如果你是一个菜鸟或者自认为初学者那么本文非常适合你:不能说这30本书就是最佳组合,但是可以说这个组合不差:本人曾博览群书,很多书重复,很多书讲的不适用,这些书都是目前书店可以买到的:达到中级程序员以后 ...

  2. [php]php总结(2)

    18.数组$arr[null] = 20; //array([]=>20)$arr[] = 20;//默认为下一个下标赋值unset()可以删除数组元素,但不会重建索引array_values( ...

  3. R7—左右内全连接详解

    在SQL查询中,经常会用到左连接.右连接.内连接.全连接,那么在R中如何实现这些功能,今天来讲一讲! SQL回顾 原理 # 连接可分为以下几类: 内连接.(典型的连接运算,使用像   =   或   ...

  4. Linux IO模型

    1. Linux IO 模型矩阵 2. 同步阻塞IO 3. 同步非阻塞IO 4. 异步阻塞IO 5. 异步非阻塞IO

  5. 当python模式遇见cedet

    TAG: emacs, python, cedet, semantic, ctags DATE: 2013-08-20 我用Emacs 24写python程序. 发现屏幕不时有些闪动,MiniBuff ...

  6. eclipse配置hadoop插件

    1. 版本信息   eclipse windows 64 bit hadoop 2.5.2 64 bit hadoop eclipse-plug 2.5.2   2. 下载hadoop-2.5.2.t ...

  7. hdu 5463 Clarke and minecraft

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5463 Clarke and minecraft Time Limit: 2000/1000 MS (J ...

  8. Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法

    Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法 网上方法很多,个人认为以下两种思想是最为常用的. 一种是让第一个盒子脱离文档流,第二个盒子离左边有一定距离. 第二种方法是使用flex布局,不 ...

  9. 【算法学习】【洛谷】树链剖分 & P3384 【模板】树链剖分 P2146 软件包管理器

    刚学的好玩算法,AC2题,非常开心. 其实很早就有教过,以前以为很难就没有学,现在发现其实很简单也很有用. 更重要的是我很好调试,两题都是几乎一遍过的. 介绍树链剖分前,先确保已经学会以下基本技巧: ...

  10. Hadoop(三):MapReduce程序(python)

    使用python语言进行MapReduce程序开发主要分为两个步骤,一是编写程序,二是用Hadoop Streaming命令提交任务. 还是以词频统计为例 一.程序开发1.Mapper for lin ...