- 浏览: 460147 次
- 性别:
- 来自: 大连
-
文章分类
最新评论
-
youngcoder:
111111
java格式化金额数字 -
mittyok:
顶一个,自动选择还真是不知道,呵呵!
PL/SQL Developer使用技巧 -
tomcent:
楼主用过OBackup 备份软件吗?不知道怎么样
oracle 备份命令 -
www6wzk:
太给力了,居然好了
mysql中文乱码解决 -
_jessic_:
管用 谢了哈
mysql中文乱码解决
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)主机环境的系统时间.
[code:1:ad22b58018]import java.util.Date;
public class DateExample1 {
public static void main(Sing[] args) {
// Get the system date/time
Date date = new Date();
System.out.println(date.getTime());
}
}
[/code:1:ad22b58018]
在星期六, 2001年9月29日, 下午大约是6:50的样子, 上面的例子在系统输出设备上显示的结果是 1001803809710. 在这个例子中,值得注意的是我们使用了Date 构造函数创建一个日期对象, 这个构造函数没有接受任何参数. 而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期.
那么, 现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了. 我们如何才能以一种用户明白的格式来显示这个日期呢? 在这里类java.text.SimpleDateFormat 和它的抽象基类 java.text.DateFormat 就派得上用场了.
二、日期数据的定制格式
假如我们希望定制日期数据的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成这个工作:
[code:1:ad22b58018]import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample2 {
public static void main(Sing[] args) {
SimpleDateFormat bartDateFormat =
new SimpleDateFormat("EEEE-MMMM-dd-yyyy");
Date date = new Date();
System.out.println(bartDateFormat.format(date));
}
}
[/code:1:ad22b58018]
只要通过向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 的日期对象.
例子程序:
[code:1:10d3268d34]import java.text.SimpleDateFormat;
import java.util.Date;
public class DateExample3 {
public static void main(Sing[] args) {
// Create a date formatter that can parse dates of
// the form MM-dd-yyyy.
SimpleDateFormat bartDateFormat =
new SimpleDateFormat("MM-dd-yyyy");
// Create a sing containing a text date to be parsed.
Sing dateSingToParse = "9-29-2001";
y {
// Parse the text version of the date.
// We have to perform the parse method in a
// y-catch consuct in case dateSingToParse
// does
not contain a date in the format we are expecting.
Date date = bartDateFormat.parse(dateSingToParse);
// 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());
}
}
}
[/code:1:10d3268d34]
五、使用标准的日期格式化过程
既然我们已经可以生成和解析定制的日期格式了, 让我们来看一看如何使用内建的格式化过程. 方法 DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式化过程. 在下面的例子中, 我们获取了四个内建的日期格式化过程. 它们包括一个短的, 中等的, 长的, 和完整的日期格式.
[code:1:10d3268d34]import java.text.DateFormat;
import java.util.Date;
public class DateExample4 {
public static void main(Sing[] 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));
}
}
[/code:1:10d3268d34]
注意我们在对 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号.
[code:1:041aeb23d1]import java.util.GregorianCalendar;
import java.util.Date;
import java.text.DateFormat;
public class DateExample5 {
public static void main(Sing[] 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()));
}
}
}
}
[/code:1:041aeb23d1]
在这个例子中我们作了有趣的函数调用:
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 创建许多方法了.
在下面的文章中, 我们将讨论更高级的Date 和 Calendar 类的使用技巧, 包括时区和国际化的格式. 我们还会考察两个日期类 java.sql.Date 和 java.util.Date 之间的区别.
<script type="text/javascript"><!----></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> |
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 创建许多方法了.
在下面的文章中, 我们将讨论更高级的Date 和 Calendar 类的使用技巧, 包括时区和国际化的格式. 我们还会考察两个日期类 java.sql.Date 和 java.util.Date 之间的区别.
发表评论
-
做好“烂项目”
2011-11-30 22:58 856确立目标,梳理情绪,执行计划,持续改进,步调一致,解决问题。 -
解决XP IIS连接访问人数限制的问题
2009-02-16 14:43 4480XP自带的IIS对连接数进行了一定的限制,当多人访问网站时老是 ... -
SSO
2008-09-05 14:10 1333SSO英文全称Single Sign On,单点登录。SSO是 ... -
动态语言
2008-05-06 13:31 1210Dynamic Programming Language (动 ... -
实现RSS的原理
2008-03-26 15:55 3305RSS是在互联网上被广泛 ... -
DIV+CSS+javascript实现DIV对象显示在页面任何位置,并随滚动条移动
2008-02-18 10:05 4730以下实现DIV对象随滚动条移动,始终显示在页面右下位置! 一 ... -
JavaScript 用DIV模拟弹出窗口并跟随窗体滚动
2008-02-18 09:52 4492<!DOCTYPE html PUBLIC " ... -
indexOf 和 charAt
2008-02-13 13:21 1900charAt 方法 返回指定索引位置处的字符。 strObj ... -
总结showModalDialog和showModelessDialog用法
2008-01-08 13:06 11991. showModalDialog和showModeles ... -
js动态显示时间
2008-01-08 13:04 4623<head> <meta http-equi ... -
js 软键盘效果
2008-01-08 12:59 3468<HTML> <HEAD> <T ... -
环境变量path的作用
2007-12-29 12:53 2193可以将任意的文件夹设置在path中,这样你就可以在任何地方执行 ... -
(转载)如何编写bat文件?
2007-12-29 12:38 2991批处理最终靠在命令提示符中执行,不过加入了控制部分。 1.Ec ... -
javascript css的tab效果
2007-12-21 13:09 4403<html> <head> & ... -
javascript表单元素回车自动切换
2007-12-20 16:18 1758示例 <html> <head> ... -
java中操作excel
2007-12-19 13:39 1001is poi? -
java格式化金额数字
2007-12-18 20:02 7963import java.text.DecimalForma ... -
将字符串或者数字转换成大写货币
2007-12-18 19:50 2100/* * Description: 字符串处理的公共类 ... -
javascript行选择
2007-12-18 13:21 1922<html> <head> & ... -
JS总结二
2007-12-17 13:21 217725.在打开的子窗口刷新父窗口的代码里如何写? window. ...
相关推荐
4. **日期时间操作**:除了格式化,易语言还支持对日期和时间进行各种操作,如增加或减少天数、获取星期几、计算两个日期之间的差值等。这些操作可以用来实现如计时器、日历等功能。 5. **源码解析**:在提供的...
在提供的文件列表中,DateAccount.java可能是包含日期操作逻辑的Java源代码文件,而加减日期.txt和转日期格式.txt很可能是详细说明这些操作的文本文件。通过阅读这些文件,你可以更深入地理解如何在实际代码中实现...
文件内包含19种梯控日期的算法规则分析,并用excel公式的方法根据算法规则自动计算梯控日期的加密数据。用户可自行输入日期,自动计算出19种梯控日期数据。
正确地解析、验证和格式化这些数据至关重要,因为它们通常用于记录事件发生的时间、进行时间序列分析或者设置定时任务等。本文将深入探讨“日期,日期时间类型数据格式校验”的相关知识点。 首先,日期和日期时间...
本文将深入探讨如何在C++中根据给定的“年-月-日”格式的日期计算出该日期是一年中的第几天,以此满足"输入日期计算日期顺序天数"的需求。 首先,我们需要了解C++中的日期处理库。标准库中的`<ctime>`包含了与日期...
在IT行业中,对时间和日期...掌握正确的格式化、解析、计算和时区处理技巧,不仅能够提升代码的健壮性和可维护性,还能显著改善用户体验。因此,深入学习和实践这一领域的知识,对于任何IT专业人士来说都是必不可少的。
4. **异常处理**: 在读取或解析日期时,可能会遇到格式错误或其他异常,因此需要捕获并处理这些异常,如`ParseException`。 5. **输入输出**: 如果程序允许用户输入日期,那么可能涉及控制台输入(`System.in`)或...
在这个“易语言格式化时间和日期源码.7z”压缩包中,包含的是关于易语言处理时间与日期的源代码,这对于学习易语言以及了解日期和时间处理的开发者来说是非常有价值的资源。 在编程中,处理时间和日期是一项常见的...
- **日期格式转换**:因为CMD默认的日期格式可能不适用于计算,所以可能需要自定义日期格式或者使用脚本解析日期字符串。 - **输出结果**:最后,脚本会将计算结果以用户友好的格式输出到控制台。 了解这些CMD...
在ABAP编程环境中,处理日期相关的操作是必不可少的技能之一,尤其在企业级应用中,对日期进行精确计算和分析尤为重要。以下是从给定文件中提取的关键知识点,这些知识点覆盖了ABAP中处理日期的各种常见需求,包括...
本文将深入探讨如何利用JavaScript进行日期计算,包括但不限于日期格式化、日期加减、以及两个日期之间的差值计算。 #### 一、日期格式化:让日期展示更美观 在实际应用中,我们经常需要将日期以特定的格式显示,...
日期类函数在 ABAP 中扮演着至关重要的角色,帮助程序员进行格式转换、比较和计算日期。以下是一些常用的 SAP ABAP 日期函数及其用法。 1. `CONVERSION_EXIT_IDATE_OUTPUT` 这个函数将内部日期格式(如 '20080203'...
`NSDateFormatter`是Foundation框架中的一个关键类,它用于将日期和时间转换为字符串,或者将字符串解析成日期对象。通过设置不同的日期格式,我们可以控制日期和时间的显示样式。例如,使用`setDateFormat:`方法...
6. **日期解析**:C++没有内置的日期解析函数,但你可以使用第三方库如`boost.date_time`或自定义函数来解析用户输入的日期。例如,将"2022-02-14"这样的日期字符串转换为`std::tm`。 7. **格式化输出**:输出日期差...
本文将深入探讨“IC卡数据分析修改、对比、日期转换、28种校验计算工具”这一强大工具,旨在帮助用户更好地理解和运用IC卡数据处理。 首先,我们来理解一下IC卡数据分析。IC卡中的数据通常以二进制形式存储,这些...
通过上述分析,我们了解到在C语言中如何利用自定义算法来处理日期和时间,尤其是如何根据日期计算星期几。这不仅加深了对C语言的理解,也为解决实际问题提供了方法。在IT领域,这样的技能对于开发人员来说是非常宝贵...
在Excel中,我们经常需要处理各种格式的日期数据,但有些日期格式可能并不符合标准的日期格式(如“年/月/日”或“月/日/年”),这给计算和操作带来了挑战。VBA(Visual Basic for Applications)作为Excel的内置...
通过以上详尽的解释,我们不仅了解了PB中日期和时间函数的基本功能,还掌握了如何利用这些函数进行日期转换、格式化以及时间计算。这对于PB开发者而言,无疑是处理复杂日期逻辑的重要工具箱。无论是构建业务报表、...
总的来说,这个工具类通过引入JSON格式的节假日数据,结合Java的日期处理能力,提供了灵活的日期判断和计算功能,对于需要处理日期逻辑的Java应用来说非常实用。开发人员可以根据自身需求,定制节假日数据源,或者...