




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java日期与字符串转换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 站点获取日期格式化选项的完整的指示.- echoguo 回复于:2004-01-15 12:48:54三、将文本数据解析成日期对象 假设我们有一个文本字符串包含了一个格式化了的日期对象, 而我们希望解析这个字符串并从文本日期数据创建一个日期对象. 我们将再次以格式化字符串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- echoguo 回复于:2004-01-15 12:49:44六、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 方法让我们能够在日期上加上数值.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电厂实操考试题库及答案
- 2025年康复医学治疗技术(副高级职称)试卷【含答案详解】
- 2025年电焊工证-上岗证考试试题考试题库(带答案)
- 2025年广东省清远市国家公务员行政职业能力测验模拟题(附答案)
- 2024-2025学年机械设备制造修理人员考前冲刺试卷含答案详解(满分必刷)
- 关于房屋出售合同
- 自考专业(工商企业管理)高分题库附参考答案详解(突破训练)
- 2025自考专业(计算机信息管理)通关题库及完整答案详解(典优)
- 米易安全员b证考试及答案
- 襄城科三安全员考及答案
- 6.2 人大代表为人民 第二课时 课件 2025-2026学年六年级道德与法治 上册 统编版
- 2025年甘肃省金川集团股份有限公司技能操作人员社会招聘400人考试参考试题及答案解析
- 4.2 遵守规则 课件 2025-2026学年 统编版道德与法治八年级上册
- T/CIE 189-2023硫化物全固态锂电池
- 2025年北京市单位劳动合同样本
- 借游戏账号合同5篇
- 广播稿的写法课件
- 2025年中职政治专业资格证面试技巧与答案解析大全
- 保密法课件教学课件
- 十八项核心医疗制度试题(附答案)
- 计生政策培训课件
评论
0/150
提交评论