晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。 林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。 见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝) 既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。 南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。
|
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/DateTime/ |
Upload File : |
<?php
/**
* Date duration
*
* @package qCal
* @subpackage qCal_DateTime
* @copyright Luke Visinoni (luke.visinoni@gmail.com)
* @author Luke Visinoni (luke.visinoni@gmail.com)
* @license GNU Lesser General Public License
*/
class qCal_DateTime_Duration {
// an array of how manys seconds are in a minute, hour, day, etc.
// IMPORTANT - don't change the order of these
protected $durations = array ('W' => 604800, 'D' => 86400, 'H' => 3600, 'M' => 60, 'S' => 1);
/**
* Duration in seconds
*/
protected $duration;
/**
* If this is negative, this will be a minus symbol. Positive doesn't need a sign, so it is just null
*/
protected $sign;
/**
* Constructor
*/
public function __construct($duration = null) {
$this->setDuration($duration);
}
/**
* Set duration - accepts an integer (amount of seconds) or an icalendar-formatted duration string
*/
public function setDuration($duration) {
$duration = strtoupper($duration);
// if plus or minus precedes number, remove it set in class
if (preg_match("/^[+-]/", (string) $duration, $matches)) {
if ($matches[0] == "-") $this->sign = "-";
$duration = str_split($duration);
array_shift($duration);
$duration = implode("", $duration);
}
if (ctype_digit($duration)) {
$this->duration = $duration;
} else {
// convert value to duration in seconds
preg_match('/^P([0-9]+[W])?([0-9]+[D])?T?([0-9]+[H])?([0-9]+[M])?([0-9]+[S])?$/i', $duration, $matches);
// remove first element (which is just entire the matched string)
array_shift($matches);
$seconds = 0;
foreach ($matches as $duration) {
if (empty($duration)) continue;
$seconds += $this->calculateSeconds($duration);
}
$this->duration = $seconds;
}
return $this;
}
/**
* Pass in a string like "15W" or "1D" and this will return how many seconds are in it
*/
protected function calculateSeconds($duration) {
$amnt = preg_replace("/[^0-9]/i", "", $duration);
$inc = preg_replace("/[^A-Z]/i", "", $duration);
return $this->durations[$inc] * $amnt;
}
/**
* Converts seconds to an icalendar-formatted duration string
*/
public function toICal() {
$total = $this->duration;
$return = "P";
// this is why order is important when defining $this->durations
foreach ($this->durations as $dur => $amnt) {
// how many "weeks" are in the value?
$quotient = (int) ($total / $amnt);
// get the remainder of the division
$remainder = $total - ($quotient*$amnt);
// now if we got a whole number as quotient, add this duration to the return string
if ($quotient) {
// if this is the first "time" duration, add the required T char
if ($dur == "H" || $dur == "M" || $dur == "S") {
if (!strpos($return, "T")) $return .= "T";
}
$return .= $quotient . $dur;
}
$total = $remainder;
}
return $this->sign . $return;
}
/**
* @todo Should this be the string representation? I dont really know.
*/
public function __toString() {
return $this->toICal();
}
/**
* Get duration in seconds
*/
public function getSeconds() {
return (integer) $this->sign . $this->duration;
}
}