2012-03-16 122 views
0

我想创建一个计算两次之间时间差的函数。 比如我送倍AS3:计算两次之间的时间差?

 timedifference(1 AM,5 PM); 

我怎么能算到下午5点下午1点之间的时间差? 任何人都可以帮助我吗?

在此先感谢。

+0

阅读此DateUtil类:http://as3.casalib.org/docs/org_casalib_util_DateUtil.html#getTimeBetween – mgraph 2012-03-16 09:02:44

+0

您能否提供您使用时间的格式? – Engineer 2012-03-16 09:05:56

+0

@mgraph:我不想在两个日期之间有时差。 – 2012-03-16 09:09:58

回答

3

下面是答案我想:这个功能的

public static function timeDifference(startTime:Date, endTime:Date) : String 
{ 
    if (startTime == null) { return "startTime empty."; } 
    if (endTime   == null) { return "endTime empty."; } 
    //trace(" endTime.valueOf() "+endTime.valueOf()+" startTime.valueOf() "+startTime.valueOf()) 
    var aTms:* = Math.floor(endTime.valueOf() - startTime.valueOf()); 
    var timeTaken:* =(int(aTms/(   60*60*1000)) %24); 
    //trace(timeTaken); 
    return "Time taken:  "   
        + String(int(aTms/(24*60*+60*1000))    ) + " days, " 
     + String(int(aTms/(   60*60*1000)) %24) + " hours, " 
     + String(int(aTms/(      60*1000)) %60) + " minutes, " 
     + String(int(aTms/(       1*1000)) %60) + " seconds."; 
} 

用法为:

var myDate:Date = new Date("3/18/2012 10:00 PM"); 
var myDate1:Date= new Date("3/19/2012 12:00 PM"); 

timeDifference(myDate,myDate1); 
+0

似乎http://stackoverflow.com/a/6990505/1216775副本。至少给原来的回答者留下应有的分数。 – 2015-12-09 09:51:57

1

我asume他们输入的时间在一个字符串,因为你有AM和PM ...这是一个坏主意,如果你问我,但因为这是你生病的只是试图在它上。

您必须先分割字符串,以及基础上加12小时,如果你是在下午,然后做时间2 - 时间1为difrence ...

trace(timedif("1 AM", "3 PM")); 

function timedif(string1:String, string2:String){ 
    var time1 = string1.split(" "); 
    var time2 = string2.split(" "); 

    var newtime1:int = time1[0]; 
    var newtime2:int = time2[0]; 

    if(time1[1] == "PM"){ newtime1 = newtime1 + 12; } 
    if(time2[1] == "PM"){ newtime2 = newtime2 + 12; } 

    var difrence = newtime2 - newtime1; 
    return difrence; 
} 

我beleive这是awnser你的问题,我不是说了一个很好的解决方案

+0

当我通过timedif(“12 AM”,“6 PM”)时会发生什么?它应该返回18作为时差。 – 2012-03-16 10:19:55

+0

然后它将返回18小时 – MakuraYami 2012-03-20 11:23:22