2013-08-28 101 views
0

我正在使用通過php從數據庫中使用xml-data生成圖形的Flash項目。爲了在正確的位置繪製一切,我想將日期轉換爲數字,我認爲Date.UTC(YYYY,MM,DD)是答案。但由於某些原因,它不能線性轉換。 AS3代碼:當我脫機操作,否則應該使用XML數據2012年1月31日UTC時間跳

private function valuedispatcher(e:Event):void { 
     debugfield.appendText("succes= "+e.target.data.succes); 
     if (e.target.data.succes) { 
      var myxml:XML = new XML(e.target.data.xml); 
      var mylist:XMLList = new XMLList(myxml.children()); 
      debugfield.appendText("\nxml[0]= " + mylist[0]); 
      debugfield.appendText("\nxml[0].time= "+mylist[0].time); 
      for (var i:int = 0; i < mylist.length(); i++) { 
       var splitter:Array = String(mylist[i].time).split("-"); 
       var seconds:Number = Date.UTC(int(splitter[0]),int(splitter[1]),int(splitter[2]),1,0,0,0); 
       var ar:Array = [mylist[i].time, seconds, mylist[i].verbruik, mylist[i].corr]; 
       debugfield.appendText("\nar= "+ar); 
       maxtot = Math.max(maxtot,mylist[i].verbruik,mylist[i].corr); 
       values.push(ar); 
       if(mylist[i].corr!=null){ 
        compareNr++; 
        cumul1 += mylist[i + 365].verbruik; 
        cumul2 += mylist[i].corr; 
       } 
      } 
     } 
     else { fakedata(); 
      debugfield.appendText("\n values= "+values); 
     } 
} 

private function fakedata():void { 
     var date: Date = new Date(2012, 01, 28); 
     var first:Boolean = true; 
     var corr; 
     for (var i:int = 0; i <= 500; i++) { 
      var dateString:String = "" + date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate(); 
      var UTCseconds:Number = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()); 
      var gebr:Number; 
      if (first) { 
       gebr = Math.round((2.3 + Math.random() * 40) * 1000)/1000; 
       first = false; 
      } 
      else { 
       gebr = Math.round((Math.max(4, Math.min(47, values[i - 1][2] - 5 + Math.random() * 10)))*1000)/1000; 
      } 
      corr = 10; 
      if (i > 134) corr = -1; 
      var ar:Array = [dateString, UTCseconds, gebr, corr]; 
      values.push(ar); 
      maxtot = Math.max(maxtot, gebr, corr); 
      if(corr!=-1){ 
       compareNr++;  
      } 
      date.date++; 
     } 
     for (var j:int = 0; j < compareNr; j++) 
     { 
      corr = values[j][2] * 0.6 + values[j + 365][2] * 0.4; 
      values[j][3] = corr; 
      cumul1 += values[j + 365][2]; 
      cumul2 += values[j][3]; 
     } 
} 

因此函數fakedata()被調用。

問題我現在似乎是,在 '網絡模式': Date.UTC(2012,1,31)= 1330646400000> Date.UTC(2012,2,1)= 13305.6億 而這是等於Date.UTC(2012,2,2)= 1330646400000

儘管在離線模式下的線date.date ++似乎使之從2012直接進入| 1 | 29至2012 | 2 | 2

這裏發生了什麼?

debugfield輸出在線:

succes= true 
xml[0]= <tag> 
     <time>2012-01-31</time> 
     <verbruik>51.413</verbruik> 
     <corr>41.239</corr> 
     </tag> 
     xml[0].time= 2012-01-31 
     ar= 2012-01-31,1330650000000,51.413,41.239 
     ar= 2012-02-01,1330563600000,44.178,43.196 
     ar= 2012-02-02,1330650000000,24.790,42.459 
     ar= 2012-02-03,1330736400000,51.494,57.789 
     ar= 2012-02-04,1330822800000,36.498,43.010 
     ar= 2012-02-05,1330909200000,32.483,40.951 
     ar= 2012-02-06,1330995600000,32.347,31.762 
     ar= 2012-02-07,1331082000000,47.655,45.023 
     ar= 2012-02-08,1331168400000,44.164,39.372 
     ar= 2012-02-09,1331254800000,44.016,52.159 
     ar= 2012-02-10,1331341200000,48.150,50.561 
     ar= 2012-02-11,1331427600000,59.129,59.882 
     ar= 2012-02-12,1331514000000,52.112,43.381 
     ar= 2012-02-13,1331600400000,44.064,41.240 
     ar= 2012-02-14,1331686800000,47.609,55.833 
     ar= 2012-02-15,1331773200000,40.153,55.569 
     ar= 2012-02-16,1331859600000,51.860,43.342 
     ar= 2012-02-17,1331946000000,40.252,30.049 
     ar= 2012-02-18,1332032400000,32.464,26.127 

debugfield輸出離線

succes= undefined 
    values= 2012-1-28,1330387200000,36.374,27.516000000000002,2012-1-29,1330473600000,33.566,24.077600000000004,2012-2-1,1330560000000,30.34,23.54,2012-2-2,1330646400000,29.529,21.6454,2012-2-3,1330732800000,29.413,22.931,2012-2-4,1330819200000,30.146,22.745199999999997,2012-2-5,1330905600000,27.961,20.565399999999997,2012-2-6,1330992000000,25.279,20.3054,2012-2-7,1331078400000,25.454,22.2524,2012-2-8,1331164800000,23.905,22.4102,2012-2-9,1331251200000,19.356,20.044400000000003,2012-2-10,1331337600000,18.32,17.900399999999998,2012-2-11,1331424000000,15.984,16.8312,2012-2-12,1331510400000,11.598,14.224400000000001,2012-2-13,1331596800000,13.081,16.643,2012-2-14,1331683200000,13.842,18.5728,2012-2-15,1331769600000,13.669,17.867,2012-2-16,1331856000000,17.472,20.4096,2012-2-17,1331942400000,17.512,18.714,2012-2-18,1332028800000,18.39,18.971200000000003,2012-2-19,1332115200000,21.985,19.235799999999998,2012-2-20,1332201600000,18.049,18.2298,2012-2-21,1332288000000,20.269,18.0362,2012-2-22,1332374400000,19.88,15.9452,2012-2-23,1332460800000,17.259,16.1194,2012-2-24,1332547200000,13.054,14.1248,2012-2-25,1332633600000,8.401,10.4042,2012-2-26,1332720000000,7.112,11.0588,2012-2-27,1332806400000,5.487,9.2158,2012-2- 

回答

0

像往常一樣,不正確的閱讀手冊。 01,因爲月份是2月份,而不是1月份。爲了得到月份,使用0

Date() manual

+0

誠然,現在看來愚蠢的,但它是一個有點bizar即00爲月份是一月,而00如日期不是當月的第一天。 – MatthiasVC

+0

我同意這很奇怪。對此的一種解釋可能是,你總是知道一年有12個月,他們一次又一次地循環。儘管一個月你並不真正瞭解,但它可能是28,29,30,31,所以你可以將它定義爲...... – Sandman

相關問題