datetime.php

来自「this the oscommerce 3.0 aplha 4」· PHP 代码 · 共 205 行

PHP
205
字号
<?php/*  $Id: datetime.php 1498 2007-03-29 14:04:50Z hpdl $  osCommerce, Open Source E-Commerce Solutions  http://www.oscommerce.com  Copyright (c) 2006 osCommerce  This program is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License v2 (1991)  as published by the Free Software Foundation.*/  class osC_DateTime {    function getNow() {      return date('Y-m-d H:i:s');          }    function getShort($date = null, $with_time = false) {      global $osC_Language;      if (empty($date)) {        $date = osC_DateTime::getNow();      }      $year = substr($date, 0, 4);      $month = (int)substr($date, 5, 2);      $day = (int)substr($date, 8, 2);      $hour = (int)substr($date, 11, 2);      $minute = (int)substr($date, 14, 2);      $second = (int)substr($date, 17, 2);      if (@date('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) {        return strftime($osC_Language->getDateFormatShort($with_time), mktime($hour, $minute, $second, $month, $day, $year));      } else {        return ereg_replace('2037', $year, strftime($osC_Language->getDateFormatShort($with_time), mktime($hour, $minute, $second, $month, $day, 2037)));      }    }    function getLong($date = '') {      global $osC_Language;      if (empty($date)) {        $date = osC_DateTime::getNow();      }      $year = substr($date, 0, 4);      $month = (int)substr($date, 5, 2);      $day = (int)substr($date, 8, 2);      $hour = (int)substr($date, 11, 2);      $minute = (int)substr($date, 14, 2);      $second = (int)substr($date, 17, 2);      if (@date('Y', mktime($hour, $minute, $second, $month, $day, $year)) == $year) {        return strftime($osC_Language->getDateFormatLong(), mktime($hour, $minute, $second, $month, $day, $year));      } else {        return ereg_replace('2037', $year, strftime($osC_Language->getDateFormatLong(), mktime($hour, $minute, $second, $month, $day, 2037)));      }    }    function getTimestamp($date = '') {      global $osC_Language;      if (empty($date)) {        $date = osC_DateTime::getNow();      }      $year = substr($date, 0, 4);      $month = (int)substr($date, 5, 2);      $day = (int)substr($date, 8, 2);      $hour = (int)substr($date, 11, 2);      $minute = (int)substr($date, 14, 2);      $second = (int)substr($date, 17, 2);      return mktime($hour, $minute, $second, $month, $day, $year);    }    function fromUnixTimestamp($timestamp) {      return date('Y-m-d H:i:s', $timestamp);    }    function isLeapYear($year = '') {      if (empty($year)) {        $year = $this->year;      }      if ($year % 100 == 0) {        if ($year % 400 == 0) {          return true;        }      } else {        if (($year % 4) == 0) {          return true;        }      }      return false;    }    function validate($date_to_check, $format_string, &$date_array) {      $separator_idx = -1;      $separators = array('-', ' ', '/', '.');      $month_abbr = array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');      $no_of_days = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);      $format_string = strtolower($format_string);      if (strlen($date_to_check) != strlen($format_string)) {        return false;      }      $size = sizeof($separators);      for ($i=0; $i<$size; $i++) {        $pos_separator = strpos($date_to_check, $separators[$i]);        if ($pos_separator != false) {          $date_separator_idx = $i;          break;        }      }      for ($i=0; $i<$size; $i++) {        $pos_separator = strpos($format_string, $separators[$i]);        if ($pos_separator != false) {          $format_separator_idx = $i;          break;        }      }      if ($date_separator_idx != $format_separator_idx) {        return false;      }      if ($date_separator_idx != -1) {        $format_string_array = explode( $separators[$date_separator_idx], $format_string );        if (sizeof($format_string_array) != 3) {          return false;        }        $date_to_check_array = explode( $separators[$date_separator_idx], $date_to_check );        if (sizeof($date_to_check_array) != 3) {          return false;        }        $size = sizeof($format_string_array);        for ($i=0; $i<$size; $i++) {          if ($format_string_array[$i] == 'mm' || $format_string_array[$i] == 'mmm') $month = $date_to_check_array[$i];          if ($format_string_array[$i] == 'dd') $day = $date_to_check_array[$i];          if ( ($format_string_array[$i] == 'yyyy') || ($format_string_array[$i] == 'aaaa') ) $year = $date_to_check_array[$i];        }      } else {        if (strlen($format_string) == 8 || strlen($format_string) == 9) {          $pos_month = strpos($format_string, 'mmm');          if ($pos_month != false) {            $month = substr( $date_to_check, $pos_month, 3 );            $size = sizeof($month_abbr);            for ($i=0; $i<$size; $i++) {              if ($month == $month_abbr[$i]) {                $month = $i;                break;              }            }          } else {            $month = substr($date_to_check, strpos($format_string, 'mm'), 2);          }        } else {          return false;        }        $day = substr($date_to_check, strpos($format_string, 'dd'), 2);        $year = substr($date_to_check, strpos($format_string, 'yyyy'), 4);      }      if (strlen($year) != 4) {        return false;      }      if (!settype($year, 'integer') || !settype($month, 'integer') || !settype($day, 'integer')) {        return false;      }      if ($month > 12 || $month < 1) {        return false;      }      if ($day < 1) {        return false;      }      if ($this->isLeapYear($year)) {        $no_of_days[1] = 29;      }      if ($day > $no_of_days[$month - 1]) {        return false;      }      $date_array = array($year, $month, $day);      return true;    }  }?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?