已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java日期转化操作大全时间和日期中常用到的几个类:java.util.Date,java.util.Calendar,java.util.GregorainCalendar,java.text.DateFormat,java.text.SimpleDateFormatjava.util.Date常用的构造方法 :Date();Date(long date)(long date) 表示从标准基准时间(称为 历元 epoch ,即 1970.1.100:00:00 GMT)经历的毫秒数。主要的方法:(介绍几个常用的,详细的查询 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)。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 ADy 年 Year 1996; 96M 年中的月份 Month July; Jul; 07w 年中的周数 Number 27W 月份中的周数 Number 2D 年中的天数 Number 189d 月份中的天数 Number 10F 月份中的星期 Number 2E 星期中的天数 Text Tuesday; Tuea Am/pm 标记 Text PMH 一天中的小时数(0-23) Number 0k 一天中的小时数(1-24) Number 24K am/pm 中的小时数(0-11) Number 0h am/pm 中的小时数(1-12) Number 12m 小时中的分钟数 Number 30s 分钟中的秒数 Number 55S 毫秒数 Number 978获得当前系统的毫秒数:Java代码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 2006millisecond = 1165219276771date1 = Mon Dec 04 16:01:16 CST 2006Java代码package org.lokvin.example.calendar; import java.util.Calendar; import java.util.GregorianCalendar; public class CalendarExample2 public static void main(String args) /获得当前日期 int year = calendar.get(Calendar.YEAR); /200 System.out.println(YEAR = + year); /获得当前月份, 0.11 表示 JAN.DEC int month = calendar.get(Calendar.MONTH); 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(); 两个日期之间的比较:查看源代码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 = trueflag = falsetime diff millis = 604800000time diff secs = 604800time diff mins = 10080time diff hours = 168time 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); 格式化日期:Java代码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 oclock 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:02format2 = 2006-12-05format3 = 6:12 下午format4 = 2006.12.05 公元 at 18:12:02 CSTformat5 = 星期二, 十二月, 05, 2006format6 = 2006.12.05 18:12 oclock 下午, 中国标准时间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); /重要apijava.text.Format formatter3=new java.text.SimpleDateFormat(yyyy-MM-+maxDay);System.out.println(formatter3.format(cal.getTime();Java将Unix时间戳转换成普通日期 public String TimeStampDate(String timestampString) Long timestamp = Long.parseLong(timestampString)*1000; String date = new java.text.SimpleDateFormat(yyyy/MM/dd HH:mm:ss).format(new java.util.Date(timestamp); return date; 多来几个经典的实例1.计算某一月份的最大天数Calendar time=Calendar.getInstance();time.clear();time.set(Calendar.YEAR,year); /year 为 int time.set(Calendar.MONTH,i-1);/注意,Calendar对象默认一月为0 int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);/本月份的天数注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间2.Calendar和Date的转化(1) Calendar转化为DateCalendar cal=Calendar.getInstance();Date date=cal.getTime();(2) Date转化为CalendarDate date=new Date();Calendar cal=Calendar.getInstance();cal.setTime(date);3.格式化输出日期时间 (这个用的比较多)其一Date date=new Date();SimpleDateFormat df=new SimpleDateFormat(yyyy-MM-dd hh:mm:ss);String time=df.format(date);System.out.println(time);/2008-10-27 08:52:32其二Calendar c = Calendar.getInstance();System.out.println(c.getTime();/Mon Oct 27 08:51:21 CST 2008SimpleDateFormat simpleDateTimeFormat = new SimpleDateFormat( yyyy-MM-dd HH:mm:ss );c = Calendar.getInstance(Locale.CHINESE);System.out.println(simpleDateTimeFormat.format(c.getTime();/ 2008-10-27 08:51:21 4.计算一年中的第几星期(1)计算某一天是一年中的第几星期Calendar cal=Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH, 8);cal.set(Calendar.DAY_OF_MONTH, 3);int weekno=cal.get(Calendar.WEEK_OF_YEAR);(2)计算一年中的第几周的星期几是几号SimpleDateFormat df=new SimpleDateFormat(yyyy-MM-dd);Calendar cal=Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.WEEK_OF_YEAR, 1);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);System.out.println(df.format(cal.getTime();输出:2006-01-025.add()的用法(不太常用)SimpleDateFormat df=new SimpleDateFormat(yyyy-MM-dd);Calendar cal=Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH, 8);cal.set(Calendar.DAY_OF_MONTH, 3);cal.add(Calendar.DATE, -4);Date date=cal.getTime();System.out.println(df.format(date);cal.add(Calendar.DATE, 4);date=cal.getTime();System.out.println(df.format(date);输出: 2006-08-30 2006-09-036.计算两个任意时间中间的间隔天数(这个比较常用)(1)传进Calendar对象 public int getIntervalDays(Calendar startday,Calendar endday). if(startday.after(endday). Calendar cal=startday; startday=endday; endday=cal; long sl=startday.getTimeInMillis(); long el=endday.getTimeInMillis(); long ei=el-sl; return (int)(ei/(1000*60*60*24); (2)传进Date对象 public int getIntervalDays(Date startday,Date endday). if(startday.after(endday). Date cal=startday; startday=endday; endday=cal; long sl=startday.getTime(); long el=endday.getTime(); long ei=el-sl; return (int)(ei/(1000*60*60*24); (3)改进精确计算相隔天数的方法 public int getDaysBetween (Calendar d1, Calendar d2) if (d1.after(d2) java.util.Calendar swap = d1; d1 = d2; d2 = swap; int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR); int y2 = d2.get(Calendar.YEAR); if (d1.get(Calendar.YEAR) != y2) d1 = (Calendar) d1.clone(); do days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);/得到当年的实际天数 d1.add(Calendar.YEAR, 1); while (d1.get(Calendar.YEAR) != y2); return days; 注意:通过上面的方法可以衍生出求任何时间,如要查出邮箱三周之内收到的邮件(得到当前系统时间再得到三周前时间)用收件的时间去匹配 最好装化成 long去比较如:1年前日期(注意毫秒的转换) java.util.Date myDate=new java.util.Date(); long myTime=(myDate.getTime()/1000)-60*60*24*365; myDate.setTime(myTime*1000); String mDate=formatter.format(myDate);7. String 和 Date ,Long 之间相互转换 (最常用)字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)通常我们取时间跨度的时候,会substring出具体时间long比较java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(M/dd/yyyy hh:mm:ss a,java.util.Locale.US);java.util.Date d = sdf.parse(5/13/2003 10:31:37 AM);long dvalue=d.getTime();SimpleDateFormat formatter = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);String mDateTime1=formatter.format(d);8. 通过时间求时间年月周求日期SimpleDateFormat formatter2 = new SimpleDateFormat(yyyy-MM F E);java.util.Date date2= formatter2.parse(2003-05 5 星期五);SimpleDateFormat formatter3 = new SimpleDateFormat(yyyy-MM-dd);String mydate2=formatter3.format(date2);求是星期几mydate= myFormatter.parse(2001-1-1);SimpleDateFormat formatter4 = new SimpleDateFormat(E);String mydate3=formatter4.format(mydate);9. java 和 具体的数据库结合在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是MSsqlserver 数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型你可以使用dateFormat定义时间日期的格式,转一个字符串即可class Datetest*method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)*param dateString 需要转换为timestamp的字符串*return dataTime timestamppublic final static java.sql.Timestamp string2Time(String dateString)throws java.text.ParseException DateFormat dateFormat;dateFormat = new SimpleDateFormat(yyyy-MM-dd kk:mm:ss.SSS, Locale.ENGLISH);/设定格式/dateFormat = new SimpleDateFormat(yyyy-MM-dd kk:mm:ss, Locale.ENGLISH);dateFormat.setLenient(false);java.util.Date timeDate = dateFormat.parse(dateString);/util类型java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime();/Timestamp类型,timeDate.getTime()返回一个long型return dateTime;*method 将字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年智控专用设备公司质量事故调查处理管理制度
- 江苏省南京市六校联合体2024-2025学年高三上学期10月期中调研化学试题化学试题(定稿)
- 9《乌鸦喝水》教学设计-2024-2025学年统编版语文一年级上册
- 化学高考福建试题及答案
- 机械专业实践总结报告7
- 2025年综合经理年底工作总结与2026年工作计划
- 石油产品精制工测试验证知识考核试卷含答案
- 2026年铁路公司招聘考试(财会专业知识)在线题库练习题及答案
- 电气试验工达标模拟考核试卷含答案
- 2025年临床输血知识试题及答案
- 汉语拼音默写表及拼读专练
- 广东省惠州市博罗县华侨中学2024-2025学年高二上学期同步检测生物学试题(含答案)
- 肺癌(肺恶性肿瘤)中医临床路径
- 2024年“泰山杯”山东省网络安全职业技能竞赛理论试题库(含答案)
- 广州宝能场馆招商合作方案
- 福建省福州市台江区华伦中学2025届九年级化学第一学期期中监测试题含解析
- 二年级上册美术教学设计-第4课 水中倒影丨赣美版
- 电动汽车自用桩安装承诺书
- 《槟榔的危害》课件
- 石墨烯项目投资计划书
- 寺院发展现状及未来趋势分析
评论
0/150
提交评论