За последние 24 часа нас посетили 37959 программистов и 1811 роботов. Сейчас ищут 833 программиста ...

class работы с датой

Тема в разделе "PHP для новичков", создана пользователем Good][Man, 15 окт 2009.

  1. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    Вот написал класс для работы с датой допустим на клиенте формируется через javascript дата какая-то передается на сервер и с помощью этого класса можно ее обрабатывать или на что фантазия хватит:)Просто решил попробывать использовать ООП в php.

    PHP:
    1. <?php
    2. /**
    3.  * Description of jsdate
    4.  *
    5.  * @author Good][Man
    6.  * @desc This Class Work only with date format yyyy-mm-dd
    7.  */
    8. class jsdate {
    9.  
    10.     private $date;
    11.     private $date_parse;
    12.     private $day;
    13.     private $month;
    14.     private $year;
    15.  
    16.     public function __construct($js_date) {
    17.         //TODO Добавить проверку валидности передаваемой даты в формате yyyy-mm-dd
    18.         $this->date = $js_date;
    19.     }
    20.  
    21.     public function parseDate($flag){
    22.         if($flag):
    23.             /*
    24.              * Подумать стоит ли обращаться через Day,Month,Year переменные
    25.              * или через элементы массива
    26.              */
    27.             $this->date_parse = split('[/.-]',$this->date);
    28.             list($this->year,$this->month,$this->day) = $this->date_parse;
    29.         else:
    30.             $this->date = implode("-",$this->date_parse);
    31.         endif;
    32.     }
    33.  
    34.     public function cutZero($num) {
    35.         $result = $num;
    36.         if(!is_string($result))
    37.             settype($result,"string");
    38.         $result = ($result[0] == "0")?$result[1]:$result;
    39.  
    40.         return $result;
    41.     }
    42.  
    43.     public function insertZero($num) {
    44.         $result = $num;
    45.         if(!is_string($result))
    46.             settype($result, "string");
    47.         $result = (strlen($result)<=1)?"0".$result:$result;
    48.  
    49.         return $result;
    50.     }
    51.  
    52.     public function increment($num) {
    53.         $result = $num;
    54.         if(!is_integer($result))
    55.             settype($result, "integer");
    56.         $result++;
    57.        
    58.         return $result;
    59.     }
    60.  
    61.     public function decriment($num){
    62.         $result = $num;
    63.         if(!is_integer($result))
    64.             settype($result, "integer");
    65.         $result--;
    66.  
    67.         return $result;
    68.     }
    69.    
    70.     public function getDate(){
    71.         return $this->date;
    72.     }
    73.  
    74.     public function getMonth(){
    75.         return $this->month;
    76.     }
    77.  
    78.     public function setMonth($pmonth){
    79.         /*TODO проверку на формат передаваемого значения*/
    80.         $this->month = $pmonth;
    81.         $this->date_parse[1] = $this->getMonth();
    82.     }
    83.  
    84.     public function getDay(){
    85.         return $this->day;
    86.     }
    87.  
    88.     public function setDay($pday){
    89.         /*TODO проверку на формат передаваемого значения*/
    90.         $this->day = $pday;
    91.         $this->date_parse[2] = $this->getDay();
    92.     }
    93.  
    94.     public function getYear(){
    95.         return $this->year;
    96.     }
    97.  
    98.     public function setYear($pyear){
    99.         /*TODO проверку на формат передаваемого значения*/
    100.         $this->year = $pyear;
    101.         $this->date_parse[0] = $this->getYear();
    102.     }
    103. }
    104. /*
    105.  * Пример реализации переформатирования даты из javascript ->php date format
    106.  * Т.К. в javascript месяца начинают нумерацию с 0 то для правильного
    107.  * представления даты нам нужно выполнить следующие действия
    108.  
    109.  
    110. $date = "2009-00-22";// Так выглядет дата 22 января 2009 года в javascript
    111. $js = new jsdate($date);
    112. $js->parseDate(true);
    113. $js->setMonth($js->cutZero($js->getMonth()));
    114. $js->setMonth($js->increment($js->getMonth()));
    115. $js->setMonth($js->insertZero($js->getMonth()));
    116. $js->parseDate(false);
    117. echo $js->getDate();
    118.  *
    119.  */
    120. ?>
    121.  
     
  2. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    есть какие-то замечания
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я юзаю таймштамп в Javascript. На входе на сервере просто делю на тысячу, чтобы избавиться от микросекунд и округляю.

    Есть еще такая штука http://ru.php.net/manual/en/class.datetime.php , а в РНР 5.3. появится полноценный класс для работы с датой, там будет куча всяких вкусняшек, типа "получить число понедельника прошлой недели".
     
  4. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Это есть и сейчас.
     
  5. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    ну я генерирую дату ведь не на сервере а на клиенте
     
  6. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
  7. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    а тот класс...не вижу смысла в нем.
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    alert( (new Date).getTime )
     
  9. Good][Man

    Good][Man Активный пользователь

    С нами с:
    23 авг 2009
    Сообщения:
    35
    Симпатии:
    0
    Адрес:
    eWorld
    Обычно да,но сказали заменить на простую прокрутку даты с помощью стрелочек то есть стрелка инпут стрелка