java中各种时间格式的转化.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 各种 时间 格式 转化
- 资源描述:
-
java中各种时间格式的转化 时间和日期中常用到的几个类:java.util.Date, java.util.Calendar, java.util.GregorainCalendar, java.text.DateFormat, java.text.SimpleDateFormat java.util.Date : 表示特定瞬间,精确到毫秒 一天是 24 * 60 * 60 = 86400 秒 世界时(UT 或 UTC) , 格林威治时间 (GMT), 格林威治时(GMT)和世界时(UT) 是相等的,格林威治时(GMT) 是标准的"民间"称呼, 世界时(UT) 是相同标准的 科学称呼。UTC 和 UT 的区别是:UTC 是基于原子时钟的,UT 是基于天体观察的。 (中文版的jdk 真是好啊,跟科普教材是的,呵呵) 常用的构造方法 : Date(); Date(long date) (long date) 表示从标准基准时间(称为 "历元" epoch ,即 1970.1.1 00:00:00 GMT)经历的毫秒数。 还有一些构造方法已经 deprecated 了 主要的方法:(介绍几个常用的,详细的查询 jdk 文档) boolean after(Date when) 测试日期在此日期之后。 boolean before(Date when) 测试日期在此日期之前。 Object clone() 返回此对象的副本 long getTime() 返回自 1970.1.1 00:00:00 GMT 后,此对象表示的毫秒数 void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。 String toString() 将 Date 对象转化成以下形式的 String:dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。 dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。 mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。 dd 是一月中的某一天(01 至 31),显示为两位十进制数。 hh 是一天中的小时(00 至 23),显示为两位十进制数。 mm 是小时中的分钟(00 至 59),显示为两位十进制数。 ss 是分钟中的秒数(00 至 61),显示为两位十进制数。 60,61 是因为有"润秒" zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。 如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。 yyyy 是年份,显示为 4 位十进制数。 使用 System.currentTimeMillis() 获得当前系统时间的毫秒数 java.util.Calendar : Calendar 类是一个抽象类. Calendar rightNow = Calendar.getInstance(); 可以使用三种方法更改日历字段:set()、add() 和 roll()。 set(f, value) 将日历字段 f 更改为 value。 此外,它设置了一个内部成员变量,以指示日历字段 f 已经被更改。尽管日历字段 f 是立即更改的,但是直到下次调用 get()、getTime()、getTimeInMillis()、 add() 或 roll() 时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调 用 set() 不会触发多次不必要的计算。 add(f, delta) 将 delta 添加到 f 字段中。这等同于调用 set(f, get(f) + delta) roll(f, delta) 将 delta 添加到 f 字段中,但不更改更大的字段。 java.util.GregorianCalendar: GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家 使用的标准日历系统。 java.text.DateFormat: DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并 分析日期或时间。 java.text.SimpleDateFormat: SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。 它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。 SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是, 仍然建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来新的创建日期-时间格式化程序。每一个这样的类方法 都能够返回一个以默认格式模式初始化的日期/时间格式化程序。可以根据需要使用 applyPattern 方法来修改格式模式。 日期和时间格式由日期和时间模式 字符串指定。 在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。 引用 字母 日期或时间元素 表示 示例 G Era 标志符 Text AD y 年 Year 1996; 96 M 年中的月份 Month July; Jul; 07 w 年中的周数 Number 27 W 月份中的周数 Number 2 D 年中的天数 Number 189 d 月份中的天数 Number 10 F 月份中的星期 Number 2 E 星期中的天数 Text Tuesday; Tue a Am/pm 标记 Text PM H 一天中的小时数(0-23) Number 0 k 一天中的小时数(1-24) Number 24 K am/pm 中的小时数(0-11) Number 0 h am/pm 中的小时数(1-12) Number 12 m 小时中的分钟数 Number 30 s 分钟中的秒数 Number 55 S 毫秒数 Number 978 z 时区 General time zone Pacific Standard Time; PST; GMT-08:00 Z 时区 RFC 822 time zone -0800 引用 日期和时间模式 结果 "yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT "EEE, MMM d, ''yy" Wed, Jul 4, '01 "h:mm a" 12:08 PM "hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time "K:mm a, z" 0:08 PM, PDT "yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700 "yyMMddHHmmssZ" 010704120856-0700 "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700 获得当前系统的毫秒数: 代码 package org.lokvin.example.calendar; public class CalendarExample1 { public static void main(String[] args) { java.util.Date date = new java.util.Date(); //获得当前系统的毫秒数,自 1970.1.1 00:00:00 GMT long time = System.currentTimeMillis(); java.util.Date date1 = new java.util.Date(time); System.out.println("date = " + date.toString()); System.out.println("millisecond = " + time); System.out.println("date1 = " + date1.toString()); } } 运行结果: 引用 date = Mon Dec 04 16:01:16 CST 2006 millisecond = 1165219276771 date1 = Mon Dec 04 16:01:16 CST 2006 代码 package org.lokvin.example.calendar; import java.util.Calendar; import java.util.GregorianCalendar; public class CalendarExample2 { public static void main(String[] args) { //获得当前日期 Calendar calendar = Calendar.getInstance(); int era = calendar.get(Calendar.ERA);// 0 = BC, 1 = AD System.out.println("ERA = " + era); int year = calendar.get(Calendar.YEAR); //2006 System.out.println("YEAR = " + year); int month = calendar.get(Calendar.MONTH); //获得当前月份, 0..11 表示 JAN..DEC System.out.println("Month = " + month);//0 = JAN ... 11 = DEC int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("Day of Month = " + day); // 1 //获得日期在本周的天数, Sun=1, Mon=2 ... Sta=7 int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); System.out.println("Day of Week = " + day_of_week); //获得当前时间 12 时制是 Calendar.HOUR int hour12 = calendar.get(Calendar.HOUR); //获得 AM ,PM , 0 = AM, 1 = PM int ampm = calendar.get(Calendar.AM_PM); System.out.println("hour 12 = " + hour12); System.out.println("am pm = " + ampm); //0 = am , 1 = pm //获得当前时间 24 时制 Calendar.HOUR_OF_DAY int hour24 = calendar.get(Calendar.HOUR_OF_DAY); System.out.println("hour 24 = " + hour24); Calendar today = new GregorianCalendar(2006, Calendar.DECEMBER, 4); //Calendar.getInstance() 得到当前具体到毫秒的一个时间点 System.out.println("calendar = " + calendar.getTime().toString()); //通过 new GregorianCalendar(2006, Calendar.DECEMBER, 4) //生成的 calendar 除了指定的年,月,日其余为0(时分秒=0) System.out.println("today = " + today.getTime().toString()); } } 运行结果: 引用 ERA = 1 YEAR = 2006 Month = 11 Day of Month = 4 Day of Week = 2 hour 12 = 4 am pm = 1 hour 24 = 16 calendar = Mon Dec 04 16:22:42 CST 2006 today = Mon Dec 04 00:00:00 CST 2006 两个日期之间的比较: 代码 package org.lokvin.example.calendar; import java.util.Calendar; import java.util.GregorianCalendar; /* * 比较两个 calendar 对象之间的先后 */ public class CalendarExample3 { public static void main(String[] args) { //日期比较 Calendar xmas = new GregorianCalendar(2006, Calendar.DECEMBER, 25); Calendar newYear = new GregorianCalendar(2007, Calendar.JANUARY, 1); //比较两个日期先后 boolean flag = xmas.before(newYear); System.out.println("flag = " + flag); flag = xmas.after(newYear); System.out.println("flag = " + flag); //两个日期相差的毫秒数 long timeDiffMillis = newYear.getTimeInMillis() - xmas.getTimeInMillis(); System.out.println("time diff millis = " + timeDiffMillis); //两个日期相差的秒数 long diffSecs = timeDiffMillis / 1000; System.out.println("time diff secs = " + diffSecs); //两个日期相差的分钟 long diffMins = timeDiffMillis / (1000 * 60); System.out.println("time diff mins = " + diffMins); //两个日期相差的小时 long diffHours = timeDiffMillis / (1000 * 60 * 60); System.out.println("time diff hours = " + diffHours); //两个日期相差的天 long diffDays = timeDiffMillis / (1000 * 60 * 60 * 24); System.out.println("time diff days = " + diffDays); } } 运行结果: 引用 flag = true flag = false time diff millis = 604800000 time diff secs = 604800 time diff mins = 10080 time diff hours = 168 time diff days = 7 使用Calendar 计算年龄: 代码 package org.lokvin.example.calendar; import java.util.Calendar; import java.util.GregorianCalendar; /* * 计算年龄 */ public class CalendarExample4 { public static void main(String[] args) { //创建生日的 Calendar 对象 Calendar birthDate = new GregorianCalendar(1979, Calendar.JULY, 7); Calendar today = Calendar.getInstance(); int age = today.get(Calendar.YEAR) - birthDate.get(Calendar.YEAR); //如果还没有过生日,则 age - 1 birthDate.add(Calendar.YEAR, age); if(today.before(birthDate)){ age--; } System.out.println("age = " + age); } } 判断是否为闰年: 代码 package org.lokvin.example.calendar; import java.util.GregorianCalendar; /* * 判断是否为闰年 leap year */ public class CalendarExample5 { public static void main(String[] args) { //判断是否"闰年" leap year GregorianCalendar cal = new GregorianCalendar(); boolean isLeapYear = cal.isLeapYear(1998); System.out.println("is leap year 1998 = " + isLeapYear); isLeapYear = cal.isLeapYear(2000); System.out.println("is leap year 2000 = " + isLeapYear); } } 运行结果 : 引用 is leap year 1998 = false is leap year 2000 = true 获得其他时区的时间: 代码 package org.lokvin.example.calendar; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.TimeZone; /* * 获得其他时区当前时间 */ public class CalendarExample6 { public static void main(String[] args) { Calendar cal = new GregorianCalendar(); int hour12 = cal.get(Calendar.HOUR); int hour24 = cal.get(Calendar.HOUR_OF_DAY); System.out.println("hour12 in our timezone = " + hour12); System.out.println("hour24 in our timezone = " + hour24); //获得其他时区的当前时间,根据 zoneId 获得时区 Calendar calJap = new GregorianCalendar(TimeZone.getTimeZone("Japan")); hour12 = calJap.get(Calendar.HOUR); System.out.println("hour12 in japs timezone = " + hour12); hour24 = calJap.get(Calendar.HOUR_OF_DAY); System.out.println("hour24 in japs timezone = " + hour24); //获得 zoneId 的列表 String[] zoneIds = TimeZone.getAvailableIDs(); for(int i=0; i<zoneIds.length; i++) { String zoneId = zoneIds[i]; System.out.println("zone id = " + zoneId); } } } 运行结果: 引用 hour12 in our timezone = 5 hour24 in our timezone = 17 hour12 in japs timezone = 6 hour24 in japs timezone = 18 zone id = Etc/GMT+12 zone id = Etc/GMT+11 zone id = MIT zone id = Pacific/Apia zone id = Pacific/Midway ... 格式化日期: 代码 package org.lokvin.example.calendar; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class DateForamExample { public static void main(String[] args) { Date rightNow = new Date(); DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd"); DateFormat format3 = new SimpleDateFormat("h:mm a"); DateFormat format4 = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); DateFormat format5 = new SimpleDateFormat("EEE, MMM, dd, ''yyyy"); DateFormat format6 = new SimpleDateFormat("yyyy.MM.dd kk:mm 'o''clock' a, zzzz"); DateFormat format7 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa"); System.out.println("format1 = " + format1.format(rightNow)); System.out.println("format2 = " + format2.format(rightNow)); System.out.println("format3 = " + format3.format(rightNow)); System.out.println("format4 = " + format4.format(rightNow)); System.out.println("format5 = " + format5.format(rightNow)); System.out.println("format6 = " + format6.format(rightNow)); System.out.println("format7 = " + format7.format(rightNow)); } } 输出结果: 引用 format1 = 2006-12-05 06:12:02 format2 = 2006-12-05 format3 = 6:12 下午 format4 = 2006.12.05 公元 at 18:12:02 CST format5 = 星期二, 十二月, 05, '2006 format6 = 2006.12.05 18:12 o'clock 下午, 中国标准时间 format7 = 02006.十二月.05 公元 06:12 下午 取当月的第一天: java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01"); java.util.Date firstDay=new java.util.Date(); System.out.println("the month first day is "+formats.format(firstDay)); 取当月的最后一天: Calendar cal = Calendar.getInstance(); int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH); java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay); System.out.println(formatter3.format(cal.getTime()));展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




java中各种时间格式的转化.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/12021286.html