2009-09-13 34 views
0

我想要做的是在服務器上創建一個腳本,讀取一個文本文件,對其進行排序,然後將其輸出到一個javascript對象(可能通過JSON)。有問題的文本文件看起來是這樣的:我應該如何在PHP中使用JavaScript存儲日期?

 
13/09/2009,17/09/2009,Arbitrary dates 
14/09/2009,18/09/2009,Some random comment 
14/09/2010,18/12/2010,A comment to the dates 
14/09/2010,18/09/2010,A subset of another date 
14/09/2001,18/09/2002,The oldest date 

處理filereading的PHP是這樣的:

function loadDates() 
{ 
    $dateFile = fopen("dates.txt", "rt"); 
    $dates = array(); 
    if($dateFile) 
    { 
     flock($dateFile,LOCK_SH); 
     $i = 0; 

     while(!feof($dateFile)) 
     { 
      $text = fgets($dateFile); 
      if($text !== FALSE) 
      { 
       $i++; 
       $arr = explode(",",$text,3); 
       //actual storage 
       $dates[$i]['start'] = strtotime($arr[0]); 
       $dates[$i]['end']  = strtotime($arr[1]); 
       $dates[$i]['comment'] = $arr[2]; 
      } 
     } 
     fclose($dateFile); 

     //sort by start date, then by end date 
     foreach($dates as $key => $item) 
     { 
      $start[$key] = $item['start']; 
      $end[$key] = $item['end']; 
     } 
     array_multisort($start, SORT_ASC, $end, SORT_ASC, $dates); 
     return $dates; 
    } 
    else 
    { 
     return FALSE; 
    } 
} 

然而,存儲UNIX在開始和結束日期timesstamps。我會使用DateTime類,但我目前僅限於PHP 4.4。理想情況下,我想存儲在一個格式中的日期是:

  1. 可以比較的數字
  2. 是人類可讀(允許dates.txt人編輯)
  3. 一貫格式(即「01-01 -1900" 轉換爲‘01/01/1900’)
  4. 可以轉換爲JavaScript Date對象

我怎麼會去存儲日期,所以他們satify這些限制?

回答

2

最安全的方法是使用UNIX時間戳

在JavaScript

,您可以使用

var mydate = new Date(); 
mydate.getTime(); //timestamp 
mydate.setTime(your_timestamp); //set using timestamp 

在PHP的日期函數將時間戳作爲第二個參數。

看到http://jp.php.net/manual/en/function.date.phphttps://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/Date

編輯:
還請參閱strftime http://jp.php.net/manual/en/function.strftime.php

編輯:
注:JavaScript函數採用毫秒,PHP函數使用秒。除以1000的JavaScript的輸出或使用類似以下內容:

Date.prototype.getTimeInSeconds = function() { 
    return this.getTime()/1000; 
} 

var mydate = new Date(); 
mydate.getTimeInSeconds(); //PHP-compatible timestamp 
+0

你忘由1000到乘法/除法 – 2009-09-14 18:52:17

+0

你」再右吧。固定。 – 2009-09-15 00:01:40

0

商店的日期這樣的:

19991231 = 1999年12月31日

20000704 = 2000年7月4日

人類可讀,絕對可排序,並且您可以爲轉換創建JavaScript函數。

我將爲您提供一個黑客從我精神錯亂的頭腦:

(假定x是YYYYMMDD形式的日期)

new Date((x-(x%10000))%9999,(((x%10000)-(x%100))%99)-1,x%100)