java日期函数 |
posted by kozzi on 2005, May 11, 12:43 PM. 技术资料 |
java日期函数 /** * 得到当前日期前后的日期 * @return 返回日期字符串 */ public static final String getBefDateString(int day_i){ Date date=new Date(System.currentTimeMillis()-day_i*24*60*60*1000); SimpleDateFormat formattxt=new SimpleDateFormat("yyyy-MM-dd"); return formattxt.format(date); } /** * 得到当前日期前后的日期 -函数功能和上边的一样。 * @return 返回日期字符串 */ public static final String getBefDateString(int day_i){ Calendar day=Calendar.getInstance(); day.add(Calendar.DATE,day_i); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(day.getTime()); } |
评论 |
你可以使用 SimpleDateFormat 类,如果日期格式不对,会产生异常。 import java.text.*; import java.util.*; public class TestDate { public static void main(String[] args) { String dStr = "2001.12.12-08.23.21"; Date d = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd-HH.mm.ss"); try { d = sdf.parse(dStr); } catch (ParseException pe) { System.out.println(pe.getMessage()); } System.out.println(d); System.out.println(d.getTime()); } } 在 java.text 包中找到那个 SimpleDateFormat 类,给它一个模板,可以 parse 成一个 Date,然后使用 Date 类的 getItme() 方法,可以得到一个 Long 数据。 模板定义如下: y 年号,如 1996 M 月份,如 July 或者 07 d 月中第几天,如 12 H 小时(24制),如 0、17 m 分钟,如 32 s 钞钟,如55 S 微钞,如978 E 星期几,如 Tuesday D 一年中的第几天,如 189 w week in year (Number) 27 W week in month (Number) 2 a am/pm marker (Text) PM k hour in day (1~24) (Number) 24 K hour in am/pm (0~11) (Number) 0 z time zone (Text) Pacific Standard Time ' escape for text (Delimiter) '' single quote (Literal) ' |
Post by kozzi on 2005, May 11, 1:10 PM
|
使用:在flash中第一帧写上var sim = SimpleDateFormat("yyyy/MM/dd"); 然后new一个日期对象var date = new Date();然后把date格式化,调用方法并显示出来:trace(sim.format(date))这样就可以得到型如这样yyyy/MM/dd的日期2004/07/03了,如果你在构造sim对象时这样写var sim = SimpleDateFormat("yy/MM/dd");就可以得到型如这样yy/MM/dd的日期04/07/03了,只要你想要什么样的格式,就在构造sim对象时写出他的格式就可以了。就是说,日期的分隔,和显示方式都可以由你自己任意指定。 这里有如下规定: y表示年,yy表示显示2位,yyyy显示全部, M表示月,都要用MM d表示日,都要用dd 如果不要年月日其中的哪个也可以,就在构造时不写就可以了,比如说不要年,只显示月日就可以这样var sim = SimpleDateFormat("MM/dd"); 具体代码如下,大家讨论,看有什么不当的地方,我再改正,到时再写一个详细教程,并把这个类提供给大家使用,一个咱们自己开发的类,自己用,呵呵。我还会写相关的一些类,希望有兴趣的朋友到时关注 /** * Title: 格式化日期类 * Description: * Company: * Copyright * @author wei386 * @version 1.0 */ class SimpleDateFormat { private var timetype :String; private var date:Date; private var year:String; private var month:String; private var day:String; function SimpleDateFormat(type:String) { this.timetype=type; } /** * 得到包含字符串firststring的开始位置 * @param String firststring * @return Number */ private function firstString(firststring:String):Number { var starts:Number = timetype.indexOf(firststring); return starts; } /** * 得到包含字符串firststring的结束位置 * @param String firststring * @return Number */ private function lastString(laststring:String):Number { var ends:Number = timetype.lastIndexOf(laststring); return ends; } /** * 查找是否年 * @param * @return Boolean */ private function findYear():Boolean { var starts = this.firstString("y"); var ends = this.lastString("y"); var yeartype = ends-starts; if(yeartype==3) { this.year=""+this.date.getFullYear(); return true; }else if(yeartype==1) { var shortyear :String= ""+this.date.getFullYear(); this.year = shortyear.substring(2,4); return true }else if(starts==-1||ends==-1) { return false; } else{ trace("年份格式不正确"); return false; } } /** * 查找是否月 * @param * @return Boolean */ private function findMonth():Boolean { var starts = this.firstString("M"); var ends = this.lastString("M"); var monthtype = ends-starts; if(starts==-1) { return false; } else if(monthtype==1) { var newmonth = this.date.getMonth()+1; if(newmonth<10) { this.month="0"+newmonth; }else{ this.month=""+newmonth; } return true } else{ trace("月份格式不正确"); return false; } } /** * 查找是否日 * @param * @return Boolean */ private function findDay():Boolean { var starts = this.firstString("d"); var ends = this.lastString("d"); var monthtype = ends-starts; if(starts==-1) { return false; } else if(monthtype==1) { var newday=this.date.getDate(); if(newday<10) { this.day="0"+newday; }else { this.day=""+newday; } return true } else{ trace("日子格式不正确"); return false; } } /** * 按照构造函数时的格式,格式化传进来的date对象 * @param Date pdate * @return String */ public function format(pdate:Date):String { this.date=pdate; var stringlength = timetype.length; var ystarts = this.firstString("y"); var yends = this.lastString("y"); var mstarts = this.firstString("M"); var mends = this.lastString("M"); var dstarts = this.firstString("d"); var dends = this.lastString("d"); var isyear=this.findYear(); var ismonth=this.findMonth(); var isday=this.findDay(); if(isyear) { this.showresult(ystarts,yends,this.year); } if(ismonth) { this.showresult(mstarts,mends,this.month); } if(isday) { this.showresult(dstarts,dends,this.day); } return timetype; } /** * 在相应的位置替换成日期结果 * @param Number nstart,Number nend,String ndate * @return void */ private function showresult(nstart:Number,nend:Number,ndate:String):Void { this.timetype = this.timetype.substring(0,nstart)+ndate+this.timetype.substring(nend+1,this.timetype.length); } } |
Post by kozzi on 2005, May 11, 1:11 PM
|
SimpleDateFormat函数使用的例子 public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。 SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat 中的 getTimeInstance、 getDateInstance 或 getDateTimeInstance 创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。 可以根据需要用 applyPattern 方法修改格式化方式。 SimpleDateFormat函数的继承关系: java.lang.Object | +----java.text.Format | +----java.text.DateFormat | +----java.text.SimpleDateFormat 下面是个小例子: import java.text.*; import java.util.Date; /** SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D 一年中的第几天 F 一月中第几个星期几 w 一年中第几个星期 W 一月中第几个星期 a 上午 / 下午 标记符 k 时 在一天中 (1~24) K 时 在上午或下午 (0~11) z 时区 */ public class FormatDateTime { public static void main(String[] args) { SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString() SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); SimpleDateFormat myFmt4=new SimpleDateFormat( "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区"); Date now=new Date(); System.out.println(myFmt.format(now)); System.out.println(myFmt1.format(now)); System.out.println(myFmt2.format(now)); System.out.println(myFmt3.format(now)); System.out.println(myFmt4.format(now)); System.out.println(now.toGMTString()); System.out.println(now.toLocaleString()); System.out.println(now.toString()); } } 效果: 2004年12月16日 17时24分27秒 04/12/16 17:24 2004-12-16 17:24:27 2004年12月16日 17时24分27秒 星期四 一年中的第 351 天 一年中第51个星期 一月中第3个星期 在一天中17时 CST时区 16 Dec 2004 09:24:27 GMT 2004-12-16 17:24:27 Thu Dec 16 17:24:27 CST 2004 下面是个JavaBean: public class FormatDateTime { public static String toLongDateString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); return myFmt.format(dt); } public static String toShortDateString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("yy年MM月dd日 HH时mm分"); return myFmt.format(dt); } public static String toLongTimeString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("HH mm ss SSSS"); return myFmt.format(dt); } public static String toShortTimeString(Date dt){ SimpleDateFormat myFmt=new SimpleDateFormat("yy/MM/dd HH:mm"); return myFmt.format(dt); } public static void main(String[] args) { Date now=new Date(); System.out.println(FormatDateTime.toLongDateString(now)); System.out.println(FormatDateTime.toShortDateString(now)); System.out.println(FormatDateTime.toLongTimeString(now)); System.out.println(FormatDateTime.toShortTimeString(now)); } } 调用的main 测试结果: 2004年12月16日 17时38分26秒 星期四 04年12月16日 17时38分 17 38 26 0965 04/12/16 17:38 |