日期格式化类SimpleDateFormat

原创 2004年07月24日 13:33:00

下午自己写了个类,格式化日期类SimpleDateFormat。大家看看,交流一下。
初衷:java中有这样的一个类SimpleDateFormat,构造一个对象的时候,制定显示的方式,就可以通过这个类的一个方法获得这种格式的当前日期。想想flash中好象还没有这个功能,每次要获得日期还要调用Date中的n个方法,最后字符串拼凑才能得到想要的格式,感觉麻烦,开动脑筋,写了这个类。

使用:在flash中第一帧写上var sim = new SimpleDateFormat("yyyy/MM/dd");
然后new一个日期对象var date = new Date();然后把date格式化,调用方法并显示出来:trace(sim.format(date))这样就可以得到型如这样yyyy/MM/dd的日期2004/07/03了,如果你在构造sim对象时这样写var sim = new SimpleDateFormat("yy/MM/dd");就可以得到型如这样yy/MM/dd的日期04/07/03了,只要你想要什么样的格式,就在构造sim对象时写出他的格式就可以了。就是说,日期的分隔,和显示方式都可以由你自己任意指定。
这里有如下规定:
y表示年,yy表示显示2位,yyyy显示全部,
M表示月,都要用MM
d表示日,都要用dd
如果不要年月日其中的哪个也可以,就在构造时不写就可以了,比如说不要年,只显示月日就可以这样var sim =new  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);
}
}

SimpleDateFormat格式化日期以及日期的相关操作

、java.util.Date的使用 1、java.util.Date的API简介 类 java.util.Date 表示特定的瞬间,精确到毫秒。提供了很多的方法,但是很多已经过时,不推荐...
  • z1074907546
  • z1074907546
  • 2016年01月25日 17:23
  • 3324

java日期格式化工具类【包含常用的日期格式化方法】

java日期格式化工具类【包含常用的日期格式化方法】 package com.util; import java.sql.Timestamp; import java.text.DateForma...
  • jammiwang19870815
  • jammiwang19870815
  • 2013年06月28日 13:18
  • 6505

使用Date和SimpleDateFormat类表示时间

在程序开发中经常需要处理日期和时间的相关数据,此时我们可以使用java.util包中的Date类,这个类最主要的作用就是获取当前时间,我们来看一下Date类的使用; 使用Date类的默认无参构造方法创...
  • u013599426
  • u013599426
  • 2016年06月21日 22:14
  • 1290

Java SimpleDateFormat 中英文时间格式化转换

JAVA SimpleDateFormat 中英文时间格式互转SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 ...
  • KingWTD
  • KingWTD
  • 2015年08月29日 17:37
  • 28190

java 日期格式化SimpleDateFormat Local西班牙等国家的日期格式化

java.text.SimpleDateFormat.SimpleDateFormat(String pattern, Locale locale) 中的Locale只给我们提供了部分国家作为常量来供...
  • Damein_
  • Damein_
  • 2016年11月11日 10:33
  • 1889

java 日期相关Date、SimpleDateFormat、Calendar区分和使用

一、Date类 类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。 Date类中很多方法已经过时,...
  • kaishizhangcheng
  • kaishizhangcheng
  • 2016年09月02日 18:54
  • 3280

《黑马程序员》 日期Data类,日期格式化DateFormat,自定义格式化SimpleDateFormat的使用

public static void main(String[] args) { // getOsDateInstance(); // testDate(); // testDateTim...
  • xfgzss
  • xfgzss
  • 2014年03月06日 13:19
  • 1322

java 日期格式化-- SimpleDateFormat 的使用。字符串转日期,日期转字符串

日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单...
  • qq_27093465
  • qq_27093465
  • 2016年11月04日 14:38
  • 19622

sql.Date与util.Date日期格式化和转换

(1) 获取当前时间,并格式化为yyyy-MM-dd格式: Java.util.Datedate = new Java.util.Date(); SimpleDateFormatsimpleDat...
  • u012861467
  • u012861467
  • 2015年11月30日 20:31
  • 2186

关于SimpleDateFormat安全的时间格式化线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调...
  • zxh87
  • zxh87
  • 2014年02月18日 16:19
  • 20414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:日期格式化类SimpleDateFormat
举报原因:
原因补充:

(最多只允许输入30个字)