`
haiyupeter
  • 浏览: 427414 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

时间格式

    博客分类:
  • Java
阅读更多

1、通过MessageFormat转化
String  dateTime = MessageFormat.format("{0,date,yyyy-MM-dd-HH-mm:ss:ms}" ,
                               new Object[]  {
                                   new java.sql.Date(System.currentTimeMillis())
                               });
说明:  yyyy-MM-dd-HH-mm:ss:ms  年yyyy 月MM 日dd 时(大写为24进制,小写为12进制)  分mm 秒ss 微妙ms

2、修改数据库时用
queryDataSet.setDate("dateField", new java.sql.Date(new java.util.Date().getTime()));
queryDataSet.setDate("dateField", new java.sql.Date.valueOf("2005-05-03"));

3、通过SimpleDateFormat 转化
SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); //格式化当前系统日期
String dateTime = dateFm.format(new java.util.Date());

4、具体讨论1
Java 语言的Calendar(日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象. 我们写了两篇文章, 这是第一篇, 我们将大概的学习日期, 日期格式, 日期的解析和日期的计算.  

我们将讨论下面的类:  
1、具体类(和抽象类相对)java.util.Date  
2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat  
3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar  

具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类.  

Date 类从Java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它. 这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1 月 1日00:00:00这一刻之前或者是之后经历的毫秒数.  

一、创建一个日期对象  

让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子. 这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间.  
//------------------------------------------------------
import java.util.Date;  

public class DateExample1 
{  
 public static void main(String[] args)
 {  
  // Get the system date/time  
  Date date = new Date();  

  System.out.println(date.getTime());  
 }  
}  
//------------------------------------------------------

在星期六, 2001年9月29日, 下午大约是6:50的样子, 上面的例子在系统输出设备上显示的结果是 1001803809710. 在这个例子中,值得注意的是我们使用了Date 构造函数创建一个日期对象, 这个构造函数没有接受任何参数. 而这个构造函数在内部使用了 System.currentTimeMillis() 方法来从系统获取日期.  

那么, 现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了. 我们如何才能以一种用户明白的格式来显示这个日期呢? 在这里类 java.text.SimpleDateFormat 和它的抽象基类 java.text.DateFormat 就派得上用场了.  

二、日期数据的定制格式  

假如我们希望定制日期数据的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成这个工作: 

//------------------------------------------------------
import java.text.SimpleDateFormat;  
import java.util.Date;  

public class DateExample2 
{  

 public static void main(String[] args) 
 {  

  SimpleDateFormat bartDateFormat =  
  new SimpleDateFormat("EEEE-MMMM-dd-yyyy");  

  Date date = new Date();  

  System.out.println(bartDateFormat.format(date));  
 }  
}  
//------------------------------------------------------

只要通过向SimpleDateFormat 的构造函数传递格式字符串"EEE-MMMM-dd-yyyy", 我们就能够指明自己想要的格式. 你应该可以看见, 格式字符串中的ASCII 字符告诉格式化函数下面显示日期数据的哪一个部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.传递"EE-MM-dd-yy"会显示 Sat-09-29-01. 请察看Sun 公司的 Web 站点获取日期格式化选项的完整的指示.
三、将文本数据解析成日期对象  
假设我们有一个文本字符串包含了一个格式化了的日期对象, 而我们希望解析这个字符串并从文本日期数据创建一个日期对象. 我们将再次以格式化字符串"MM-dd-yyyy" 调用SimpleDateFormat类, 但是这一次, 我们使用格式化解析而不是生成一个文本日期数据. 我们的例子, 显示在下面, 将解析文本字符串"9-29-2001"并创建一个值为001736000000 的日期对象. 

//------------------------------------------------------
import java.text.SimpleDateFormat;  
import java.util.Date;  

public class DateExample3 
{  

 public static void main(String[] args) 
 {  
  // Create a date formatter that can parse dates of  
  // the form MM-dd-yyyy.  
  SimpleDateFormat bartDateFormat =  
   new SimpleDateFormat("MM-dd-yyyy");  

  // Create a string containing a text date to be parsed.  
  String dateStringToParse = "9-29-2001";  

  try {  
   // Parse the text version of the date.  
   // We have to perform the parse method in a  
   // try-catch construct in case dateStringToParse  
   // does not contain a date in the format we are expecting.  
   Date date = bartDateFormat.parse(dateStringToParse);  

   // Now send the parsed date as a long value  
   // to the system output.  
   System.out.println(date.getTime());  
  }  
  catch (Exception ex) {  
   System.out.println(ex.getMessage());  
  }  
 }  
}  
//------------------------------------------------------

四、使用标准的日期格式化过程  

既然我们已经可以生成和解析定制的日期格式了, 让我们来看一看如何使用内建的格式化过程. 方法 DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式化过程. 在下面的例子中, 我们获取了四个内建的日期格式化过程. 它们包括一个短的, 中等的, 长的, 和完整的日期格式.  

//------------------------------------------------------
import java.text.DateFormat;  
import java.util.Date;  

public class DateExample4 
{  

 public static void main(String[] args) 
 {  
  Date date = new Date();  

  DateFormat shortDateFormat =  
   DateFormat.getDateTimeInstance(  
    DateFormat.SHORT,  
    DateFormat.SHORT);  

  DateFormat mediumDateFormat =  
  DateFormat.getDateTimeInstance(  
   DateFormat.MEDIUM,  
   DateFormat.MEDIUM);  

  DateFormat longDateFormat =  
   DateFormat.getDateTimeInstance(  
    DateFormat.LONG,  
    DateFormat.LONG);  

  DateFormat fullDateFormat =  
   DateFormat.getDateTimeInstance(  
    DateFormat.FULL,  
    DateFormat.FULL);  

  System.out.println(shortDateFormat.format(date));  
  System.out.println(mediumDateFormat.format(date));  
  System.out.println(longDateFormat.format(date));  
  System.out.println(fullDateFormat.format(date));  
 }  
}  
//------------------------------------------------------

注意我们在对 getDateTimeInstance的每次调用中都传递了两个值. 第一个参数是日期风格, 而第二个参数是时间风格. 它们都是基本数据类型int(整型). 考虑到可读性, 我们使用了DateFormat 类提供的常量: SHORT, MEDIUM, LONG, 和 FULL. 要知道获取时间和日期格式化过程的更多的方法和选项, 请看Sun 公司Web 站点上的解释.  

运行我们的例子程序的时候, 它将向标准输出设备输出下面的内容:  
9/29/01 8:44 PM  
Sep 29, 2001 8:44:45 PM  
September 29, 2001 8:44:45 PM EDT  
Saturday, September 29, 2001 8:44:45 PM EDT

五、Calendar 类  

我们现在已经能够格式化并创建一个日期对象了, 但是我们如何才能设置和获取日期数据的特定部分呢, 比如说小时, 日, 或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类. 就如我们前面提到的那样, Calendar 类中的方法替代了Date 类中被人唾骂的方法.  

假设你想要设置, 获取, 和操纵一个日期对象的各个部分, 比方一个月的一天或者是一个星期的一天. 为了演示这个过程, 我们将使用具体的子类 java.util.GregorianCalendar. 考虑下面的例子, 它计算得到下面的第十个星期五是13号.  

//------------------------------------------------------
import java.util.GregorianCalendar;  
import java.util.Date;  
import java.text.DateFormat;  

public class DateExample5 
{  

 public static void main(String[] args) 
 {  
  DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);  

  // Create our Gregorian Calendar.  
  GregorianCalendar cal = new GregorianCalendar();  
  
  // Set the date and time of our calendar  
  // to the system&s date and time  
  cal.setTime(new Date());  

  System.out.println("System Date: " +  
  dateFormat.format(cal.getTime()));  

  // Set the day of week to FRIDAY  
  cal.set(GregorianCalendar.DAY_OF_WEEK,  
  GregorianCalendar.FRIDAY);  
  System.out.println("After Setting Day of Week to Friday: " +  
   dateFormat.format(cal.getTime()));  

  int friday13Counter = 0;  
  
  while (friday13Counter <= 10) 
  {  

   // Go to the next Friday by adding 7 days.  
   cal.add(GregorianCalendar.DAY_OF_MONTH, 7);  

   // If the day of month is 13 we have  
   // another Friday the 13th.  
   if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13) 
   {  
    friday13Counter++;  
    System.out.println(dateFormat.format(cal.getTime()));  
   }  
  }  
 }  
}  
//------------------------------------------------------

在这个例子中我们作了有趣的函数调用:  
cal.set(GregorianCalendar.DAY_OF_WEEK,  
GregorianCalendar.FRIDAY);  

和:  
cal.add(GregorianCalendar.DAY_OF_MONTH, 7);  

set 方法能够让我们通过简单的设置星期中的哪一天这个域来将我们的时间调整为星期五. 注意到这里我们使用了常量 DAY_OF_WEEK 和 FRIDAY来增强代码的可读性. add 方法让我们能够在日期上加上数值. 润年的所有复杂的计算都由这个方法自动处理.  

我们这个例子的输出结果是:  
System Date: Saturday, September 29, 2001  
当我们将它设置成星期五以后就成了: Friday, September 28, 2001  
Friday, September 13, 2002  
Friday, December 13, 2002  
Friday, June 13, 2003  
Friday, February 13, 2004  
Friday, August 13, 2004  
Friday, May 13, 2005  
Friday, January 13, 2006  
Friday, October 13, 2006  
Friday, April 13, 2007  
Friday, July 13, 2007  
Friday, June 13, 2008  

六、时间掌握在你的手里  

有了这些Date 和Calendar 类的例子, 你应该能够使用 java.util.Date, java.text.SimpleDateFormat, 和 java.util.GregorianCalendar 创建许多方法了.  

5、具体讨论2
这里只讨论java中对日期的几个简单类: 
1.       java.util.Date
2.       java.text.DateFormat(Abstract),java.text.SimpleDateFormat
3.       java.util.Calendar(Abstract),java.util。GregorianCalendar

首先看一下Date类,Date中只提供了几个获得本地时间的方法,具体用法见下:
import java.util.Date;
public class DateFormatTest {
  public DateFormatTest() {
  }

  public static void main(String[] args) {
    Date dt=new Date();
    String localeString=dt.toLocaleString();
    String gmtString=dt.toGMTString();
    System.out.println(localeString);
    System.out.println(gmtString);
    System.out.println(dt.getTime());
    System.out.println(System.currentTimeMillis());
  }
}
输出结果为:
2004-12-31 9:34:04
31 Dec 2004 01:34:04 GMT
1104456844281
1104456844500
从结果中可以看到,dt.getTime()与System.currentTimeMillis()这两个方法得到的时间是相同的。因为Date的构造函数中调用了System.currentTimeMillis()方法来从系统获得当前时间。其结果实际上是从1970年1月1日开始到当前所经历的毫秒数。
以下的例子展示的是一个简单的格式化日期的代码:
import java.text.*;
import java.util.Locale;
import java.util.Date;
public class DateFormatTest {
  public DateFormatTest() {
  }

  public static void main(String[] args) {
    DateFormat df=DateFormat.getDateInstance();
    SimpleDateFormat defaultSDF=new SimpleDateFormat();
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(new Date());
    System.out.println(df.format(new Date()));
    System.out.println(defaultSDF.format(new Date()));
    System.out.println(sdf.format(new Date()));
  }}

输出结果是:
Fri Dec 31 09:48:19 CST 2004
2004-12-31
04-12-31 上午9:48
2004-12-31

SimpleDateFormat的构造函数中String中字符的含义列如下表:
Letter Date or Time Component Presentation Examples 
G Era designator Text AD 
y Year Year 1996; 96 
M Month in year Month July; Jul; 07 
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 in week Text Tuesday; Tue
 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 Time; PST; GMT-08:00 
Z Time zone RFC 822 time zon
上面展示的例子是将Date格式化成我们想要的格式,通常还会遇到需要将有些已经格式好的String再解析成Date的问题。在下面的文章中将会讲到。
import java.text.*;
import java.util.Locale;
import java.util.Date;
public class DateFormatTest {
  public DateFormatTest() {
  }
  public static void main(String[] args) {
    String dateToparse="30-12-2004";
    SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy")
   Date dt=new Date()
   try{
     dt=sdf.parse(dateToparse)
     System.out.print(dt)
   }catch(Exception e){
     e.printStackTrace();
  }}}

分享到:
评论

相关推荐

    js日期时间格式化日期时间格式化

    js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化

    数据库转换日期格式

    ### 数据库转换日期格式 在处理数据库操作时,经常会遇到日期格式转换的需求。本文将详细介绍几种常见数据库(如SQL Server、Oracle、DB2)中如何进行日期格式转换的方法,并通过具体的示例帮助读者更好地理解和...

    extjs日期显示(如何转换日期格式)

    这些依赖项用于将后台 Controller 传递来的 Page&lt;UrlAccessResourceDTO&gt; 类型的数据中的日期格式数据转换为 UTC 标准时间格式。 第二步:在 sso-web/pom.xml 中注释掉 spring3.0 的 jackson 依赖,使用 4.0 的 ...

    javascript的trim和日期时间格式化函数

    下面是一个自定义的日期格式化函数示例: ```javascript Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, // month "d+": this.getDate(), // day "h+": this.getHours(), ...

    sql 日期格式的显示方式

    ### SQL 日期格式的显示方式 在处理数据库中的日期数据时,我们经常需要根据不同的应用场景来调整日期的显示格式。特别是在使用SQL Server时,对于日期类型的字段(如`smalldatetime`)进行格式化显示是一项基本且...

    vb6.0 时间格式显示大全

    - `mm/dd/yyyy`: 美式日期格式,例如“05/20/2022”。 - `dd-mm-yyyy`: 欧式日期格式,例如“20-05-2022”。 - `yyyy-mm-dd`: ISO 8601日期格式,例如“2022-05-20”。 - `ddd, mmm dd, yyyy`: 带有星期缩写的...

    Delphi设置系统日期格式

    ### Delphi 设置系统日期格式 在开发过程中,经常会遇到需要处理日期格式的情况。Delphi 提供了一套完整的 API 来帮助开发者实现对日期格式的定制与更改。本文将详细介绍如何在 Delphi 中设置系统的日期格式,并...

    java将数字转换为时间格式

    方法的主要功能是将输入的字符串形式的日期转换为`java.util.Date`类型,并允许指定日期格式。 ```java public synchronized static java.util.Date getStringToDate(String date, String type) throws Exception {...

    Sql Server 中一个非常强大的日期格式化函数

    ### SQL Server 中强大的日期格式化函数:CONVERT 在SQL Server中处理日期和时间数据时,经常需要将日期和时间转换成不同的格式以便于展示或分析。`CONVERT` 函数是SQL Server中最常用的一种方法来实现日期和时间...

    日期和时间格式

    日期和时间格式 日期和时间格式是指在计算机科学中用于表示日期和时间的格式化规则。这些规则定义了日期和时间字符串的模式,其中包括日期、时间、时区等元素。日期和时间格式由日期和时间模式字符串指定,该字符串...

    日期,日期时间类型数据格式校验

    常见的日期格式有“年-月-日”(如2022-01-01)、“月/日/年”(如01/01/2022)以及“年月日”(如20220101),而日期时间格式则可能包含小时、分钟、秒甚至毫秒,如“年-月-日 时:分:秒”(2022-01-01 12:00:00)。...

    WINDOWS修改注册表日期格式

    日期格式为yyyy-MM-dd HH:mm:ss,由于sqlserver日期格式要求,系统日期时间有误

    bootstap-talbe日期格式化

    Bootstrap Table 是一个基于 ...整个流程涉及到了 MySQL 的日期存储、Spring MyBatis 的数据处理、前端的 Bootstrap Table 以及日期格式化库的使用。确保每个环节都正确配置和使用,你就能成功地实现日期的格式化显示。

    设置plsql_developer时间格式的方法.docx

    在处理日期和时间数据时,正确设置时间格式至关重要,因为它直接影响到查询的简洁性和效率。本文将详细介绍如何在PL/SQL Developer中设置时间格式,以避免在SQL查询中频繁地添加'DATE'标志。 默认情况下,PL/SQL ...

    获取当前日期及格式化

    下面详细阐述如何在MySQL中获取当前日期以及如何进行日期格式化。 首先,MySQL中的获取当前日期和时间的函数是`NOW()`。这个函数返回当前的日期和时间,精确到秒。例如,当你执行`SELECT NOW();`时,你会得到如下...

    C#日期格式化汇总,迅速让你掌握日期格式化

    首先,C#中的日期格式化主要通过`DateTime.ToString`方法实现,它允许我们将日期和时间对象转换为各种预定义或自定义的字符串格式。这个方法接受两个参数:一个是格式字符串,用于定义输出的格式,另一个是`...

    c# winform 打印DataGridView日期数据格式,格式化日期格式,可多页并可选择列打印

    总之,实现C# WinForm中的`DataGridView`打印功能,需要对`PrintDocument`类有深入理解,并掌握日期格式化、分页逻辑和用户选择列的处理。通过分析提供的源码,我们可以学习到实际开发中的最佳实践,提高我们的编程...

    iOS日期格式化类(刚刚、一分钟前、昨天、周几)

    "iOS日期格式化类(刚刚、一分钟前、昨天、周几)"这个主题聚焦于如何利用Objective-C来处理日期的本地化显示,使得时间表述更加直观易懂。在这个场景下,我们通常会用到`NSDateFormatter`类以及相关的辅助方法来实现...

    Sql日期时间格式转换

    ### SQL 日期时间格式转换详解 在SQL Server中,日期时间数据类型的格式转换是一项非常实用且经常被用到的功能。特别是在处理与日期时间相关的数据时,我们常常需要将日期时间值转换为不同的字符串格式以便更好地...

    c#日期格式转换c#日期格式转换

    根据提供的标题、描述、标签及部分内容,我们可以了解到本篇文章主要关注的是C#中的日期格式转换。下面将基于这些信息详细阐述C#日期格式转换的相关知识点。 ### C# 日期格式转换概述 在C#编程中,对日期进行格式...

Global site tag (gtag.js) - Google Analytics