package Utils
{
import mx.formatters.DateFormatter;
public class DateTimeUtil
{
public static const LONG:String="YYYY.MM.DD HH:NN:SS";
public static const SHORT:String="YYYY.MM.DD";
private static var _inst:DateTimeUtil;
private var df:DateFormatter;
public function DateTimeUtil()
{
df=new DateFormatter();
}
public static function getInstance():DateTimeUtil
{
if (!_inst)
_inst=new DateTimeUtil();
return _inst;
}
/**
* 格式化,仅提供长短两种时间格式,默认短时间格式
* @param date
* @param type
* @return
*/
public function formatDate(date:Object=null, type:String=DateTimeUtil.SHORT):String
{
if (!date)
return "";
df.formatString=type;
return df.format(date);
}
/**
* 计算两个时间相差多少天 d1-d2
* @param d1
* @param d2
*/
public function diffDate(d1:Date, d2:Date):int
{
var diff:Number=d1.valueOf() - d2.valueOf();
return int(diff / 24 / 60 / 60 / 1000);
}
/**
* 日期的前一天
* @param date
* @return
*/
public function prevDate(date:Date):Date
{
//new Date(
return addDate(date,-1);
}
/**
* 日期的后一天
* @param date
* @return
*/
public function nextDate(date:Date):Date
{
return addDate(date,1);
}
/**
* 日期添加N天,只支持短时间,即年月日
* @param date
* @param days
* @return
*/
public function addDate(date:Date,days:int):Date
{
return new Date(date.fullYear,date.month,date.date+days);
}
/**
* 日期添加N年,只至支持短时间,即年月日
* @param date
* @param yeas
* @return
*/
public function addYear(date:Date,yeas:int):Date
{
return new Date(date.fullYear+yeas,date.month,date.date);
}
/**
* 传一个2009-12-04 16:17:39类似字符串
* 解析成一个Date对象
*
*/
public static function parseString2Date(str:String):Date
{
var dd:Number=Date.parse(str);
var arr:Array=str.split(" ");
var dateArr:Array=arr[0].toString().split("-");
var timeArr:Array=arr[1].toString().split(":");
var date:Date=new Date(Number(dateArr[0]),Number(dateArr[1]-1),Number(dateArr[2]),Number(timeArr[0]),Number(timeArr[1]),Number(timeArr[2]),0)
return date;
}
/**
* 解析一个时间对象成为
* 类似2009-12-04 16:17:39的字符串
*
*/
public static function parseDate2String(date:Date):String
{
var df:DateFormatter=new DateFormatter();
df.formatString="YYYY-MM-D JJ:NN:SS";
var str:String= df.format(date);
return str;
}
public static function getNowDate():Date
{
var date:Date=new Date();
var now:Date=new Date(date.fullYear,date.month,date.date,date.hours,date.minutes,date.seconds,date.milliseconds);
return now;
}
//判断t2是否介于t1和t3之间
public function comperTime(t1:String,t2:String,t3:String):Boolean
{
var y:Boolean=false;
dateFormatter.formatString = "YYYY-MM-DD JJ:NN:SS";
var str1,str2,str3:String;
str1=dateFormatter.format(t1);
str2=dateFormatter.format(t2);
str3=dateFormatter.format(t3);
str1=str1.replace(myPattern1,'');
str2=str2.replace(myPattern1,'');
str3=str3.replace(myPattern1,'');
if(int(str1)<=int(str2)&&int(str2)<=int(str3))
{
y= true;
}
else
{
y= false;
}
return y;
}
//t2-t1剩余的时间
public function leftTime(t1:String,t2:String):Number
{
var leftTime:Number;
dateFormatter.formatString = "YYYY-MM-DD JJ:NN:SS";
var str1,str2:String;
str1=dateFormatter.format(t1);
str2=dateFormatter.format(t2);
str1=str1.replace(myPattern1,'');
str2=str2.replace(myPattern1,'');
var t:Number=int(str2)-int(str1);
var time:String=t.toString();
if(time.length==6)
{
leftTime=int(time.substring(0,2))*3600+int(time.substring(2,4))*60+int(time.substring(5));
}
else if(time.length==5)
{
leftTime=int(time.substring(0,1))*3600+int(time.substring(1,3))*60+int(time.substring(4));
}
else if(time.length==4)
{
leftTime=int(time.substring(0,2))*60+int(time.substring(2,4));
}
else if(time.length==3)
{
leftTime=int(time.substring(0,1))*60+int(time.substring(1,3));
}
else
{
leftTime=t;
}
return leftTime;
}
}
}