2012-03-16 151 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