晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
Server : Apache System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64 User : rainic ( 1014) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/akaindir/public_html/crm/modules/Mobile/third-party/qCal/qCal/ |
Upload File : |
<?php
/**
* qCal_DateTime
*
* In order to perform all the complex date/time based math and logic required to
* implement the iCalendar spec, we need a complex date/time class. This class represents
* a specific point in time, including the time. Internally it makes use of qCal_Date and
* qCal_Time. If only a date or only a time needs to be represented, then one of those
* classes should be used.
*
* @package qCal_Date
* @
*/
class qCal_DateTime {
/**
* @var qCal_Date An object that represents the date
*/
protected $date;
/**
* @var qCal_Time An object that represents the time
*/
protected $time;
/**
* @var string The default string representation of datetime is a direct
* correlation to the date function's "c" metacharacter
*/
protected $format = "Y-m-d\TH:i:sP";
/**
* Class constructor
* @todo Make this default to "now"
* @todo It is possible that the timezone could put the date back (or forward?) a day. This does not account for that
*/
public function __construct($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $timezone = null, $rollover = null) {
$date = new qCal_Date($year, $month, $day, $rollover);
$time = new qCal_Time($hour, $minute, $second, $timezone, $rollover);
$this->setDate($date);
$this->setTime($time);
}
/**
* Generate a datetime object via string
* @todo Should this accept qCal_Date and qCal_DateTime objects?
*/
public static function factory($datetime, $timezone = null) {
if (is_null($timezone) || !($timezone instanceof qCal_Timezone)) {
// @todo Make sure this doesn't cause any issues
// detect if we're working with a UTC string like "19970101T180000Z", where the Z means use UTC time
if (strtolower(substr($datetime, -1)) == "z") {
$timezone = "UTC";
}
$timezone = qCal_Timezone::factory($timezone);
}
// get the default timezone so we can set it back to it later
$tz = date_default_timezone_get();
// set the timezone to GMT temporarily
date_default_timezone_set("GMT");
// handles unix timestamp
if (is_integer($datetime) || ctype_digit((string) $datetime)) {
$timestamp = $datetime;
} else {
// handles just about any string representation of date/time (strtotime)
if (is_string($datetime) || empty($datetime)) {
if (!$timestamp = strtotime($datetime)) {
// if unix timestamp can't be created throw an exception
throw new qCal_DateTime_Exception("Invalid or ambiguous date/time string passed to qCal_DateTime::factory()");
}
}
}
if (!isset($timestamp)) {
throw new qCal_DateTime_Exception("Could not generate a qCal_DateTime object.");
}
list($year, $month, $day, $hour, $minute, $second) = explode("|", gmdate("Y|m|d|H|i|s", $timestamp));
// set the timezone back to what it was
date_default_timezone_set($tz);
return new qCal_DateTime($year, $month, $day, $hour, $minute, $second, $timezone);
}
/**
* Set the date component
*/
protected function setDate(qCal_Date $date) {
$this->date = $date;
}
/**
* Set the time component
*/
protected function setTime(qCal_Time $time) {
$this->time = $time;
}
/**
* Get time portion as object
*/
public function getTime() {
return $this->time;
}
/**
* Get date portion as object
*/
public function getDate() {
return $this->date;
}
/**
* Get unix timestamp
*/
public function getUnixTimestamp($useOffset = true) {
return $this->date->getUnixTimestamp() + $this->time->getTimestamp($useOffset);
}
/**
* Set the format to use when outputting as a string
*/
public function setFormat($format) {
$this->format = (string) $format;
return $this;
}
/**
* Format the date/time using PHP's date() function's meta-characters
* @todo It's obvious I need to find a better solution to formatting since I have repeated this method
* in three classes now...
*/
public function format($format) {
$escape = false;
$meta = str_split($format);
$output = array();
foreach($meta as $char) {
if ($char == '\\') {
$escape = true;
continue;
}
if (!$escape && $this->convertChar($char) != $char) {
$output[] = $this->convertChar($char);
} else {
$output[] = $char;
}
// reset this to false after every iteration that wasn't "continued"
$escape = false;
}
return implode($output);
}
/**
* convert character
*/
protected function convertChar($char) {
$char = $this->date->format($char);
$char = $this->time->format($char);
$char = $this->time->getTimezone()->format($char);
return $char;
}
/**
* Output date/time as string
*/
public function __toString() {
return $this->format($this->format);
}
/**
* Get date/time as UTC
*/
public function getUtc($humanReadable = false) {
if ($humanReadable) return gmdate('Y-m-d', $this->date->getUnixTimestamp()) . gmdate('\TH:i:s\Z', $this->time->getTimestamp());
else return gmdate('Ymd', $this->date->getUnixTimestamp()) . gmdate('\THis\Z', $this->time->getTimestamp());
}
}