格式化日期类SimpleDateFormat |
| 作者:佚名 来源:不详 更新:2007-1-13 20:42:30 错误报告 我要投稿 |
下午自己写了个类,格式化日期类SimpleDateFormat。大家看看,交流一下。 初衷:java中有这样的一个类SimpleDateFormat,构造一个对象的时候,制定显示的方式,就可以通过这个类的一个方法获得这种格式的当前日期。想想flash中好象还没有这个功能,每次要获得日期还要调用Date中的n个方法,最后字符串拼凑才能得到想要的格式,感觉麻烦,开动脑筋,写了这个类。 使用:在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); } }
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |