/**
  * @param $quarter
  * @param $year
  * @param string $timeZoneString
  *
  * @return MomentPeriodVo
  * @throws MomentException
  */
 public static function getQuarterPeriod($quarter, $year, $timeZoneString = 'UTC')
 {
     switch ($quarter) {
         case 1:
             $startMonth = 1;
             $endMonth = 3;
             break;
         case 2:
             $startMonth = 4;
             $endMonth = 6;
             break;
         case 3:
             $startMonth = 7;
             $endMonth = 9;
             break;
         case 4:
             $startMonth = 10;
             $endMonth = 12;
             break;
         default:
             throw new MomentException('Invalid quarter. The range of quarters is 1 - 4. You asked for: ' . $quarter);
     }
     // set start
     $start = new Moment();
     $start->setTimezone($timeZoneString)->setYear($year)->setMonth($startMonth)->setDay(1)->setTime(0, 0, 0);
     // set end
     $end = new Moment();
     $end->setTimezone($timeZoneString)->setYear($year)->setMonth($endMonth)->setDay($end->format('t'))->setTime(23, 59, 59);
     // set period vo
     $momentPeriodVo = new MomentPeriodVo();
     return $momentPeriodVo->setInterval($quarter)->setStartDate($start)->setEndDate($end);
 }
示例#2
0
 public static function from(Moment $moment)
 {
     $seconds = floor($moment->ms() / 1000);
     $milliseconds = $moment->ms() - $seconds * 1000;
     $microseconds = $milliseconds * 1000;
     return new \MongoDate($seconds, $microseconds);
 }
示例#3
0
 /**
  * @covers Moment\Moment::resetDateTime
  */
 public function testMoment()
 {
     $data = '1923-12-31 12:30:00';
     $m = new Moment($data);
     $this->assertEquals('1923-12-31T12:30:00+0000', $m->format());
     $data = '1923-12-31T12:30:00.000';
     $m = new Moment($data);
     $this->assertEquals('1923-12-31T12:30:00+0000', $m->format());
     $data = '1923-12-31T12:30:00.123';
     $m = new Moment($data);
     $this->assertEquals('1923-12-31T12:30:00+0000', $m->format());
     $data = '1923-12-31T12:30:00.123+02:00';
     $m = new Moment($data);
     $this->assertEquals('1923-12-31T12:30:00+0200', $m->format());
     $data = '1923-12-31T12:30:00.123+0200';
     $m = new Moment($data);
     $this->assertEquals('1923-12-31T12:30:00+0200', $m->format());
     $data = '1923-12-31T12:30:00.123Z';
     $m = new Moment($data);
     $this->assertEquals('1923-12-31T12:30:00+0000', $m->format());
     $data = '1923-12-31T12:30:00.123Europe/Warsaw';
     $m = new Moment($data);
     $this->assertEquals('1923-12-31T12:30:00+0100', $m->format());
     $data = '1923-12-31T12:30:00.123Europe/Warsaw';
     $m = new Moment($data, 'UTC');
     $this->assertEquals('1923-12-31T12:30:00+0100', $m->format());
     $data = '1923-12-31T12:30:00.123UTC';
     $m = new Moment($data, 'Europe/Warsaw');
     $this->assertEquals('1923-12-31T12:30:00+0000', $m->format());
 }
 public function testCorrectDate()
 {
     $string = '2015-06-14 20:46:22';
     $moment = new Moment($string, 'Europe/Berlin');
     $this->assertEquals('14. Juni', $moment->format('d. F'));
     $string = '2015-03-08T15:14:53-0500';
     $moment = new Moment($string, 'Europe/Berlin');
     $this->assertEquals('08. März', $moment->format('d. F'));
 }
 public function testMinutes()
 {
     $past = new Moment('2016-01-03 16:17:07', 'Europe/Berlin');
     $relative = $past->from('2016-01-03 16:34:07');
     $this->assertEquals('17 minut temu', $relative->getRelative());
     $relative = $past->from('2016-01-03 16:40:07');
     $this->assertEquals('23 minuty temu', $relative->getRelative());
     $relative = $past->from('2016-01-03 16:30:07');
     $this->assertEquals('13 minut temu', $relative->getRelative());
 }
示例#6
0
 public static function write($msg)
 {
     if (file_exists(LOG_DIRECTORY . LOG_FILE)) {
         $current = file_get_contents(LOG_DIRECTORY . LOG_FILE);
     }
     $time = new Moment();
     $timeStamp = $time->nowTimestamp();
     $msg = $timeStamp . ': ' . $msg;
     $file = fopen(LOG_DIRECTORY . LOG_FILE, "w");
     if (isset($current)) {
         fwrite($file, $current);
     }
     fwrite($file, $msg . "\r\n");
     fclose($file);
 }
示例#7
0
 /**
  * @param bool $withTime
  *
  * @return string
  */
 public function calendar($withTime = true)
 {
     $momentNow = new Moment('now', $this->getTimezoneString());
     $momentFromVo = $this->cloning()->startOf('day')->from($momentNow->startOf('day'));
     $diff = $momentFromVo->getDays();
     // handle time string
     $renderedTimeString = MomentLocale::renderLocaleString(array('calendar', 'withTime'), array($this));
     $addTime = false;
     // apply cases
     if ($diff > 7) {
         $localeKeys = array('calendar', 'default');
     } elseif ($diff > 1) {
         $localeKeys = array('calendar', 'lastWeek');
         $addTime = true;
     } elseif ($diff > 0) {
         $localeKeys = array('calendar', 'lastDay');
         $addTime = true;
     } elseif ($diff == 0) {
         $localeKeys = array('calendar', 'sameDay');
         $addTime = true;
     } elseif ($diff == -1) {
         $localeKeys = array('calendar', 'nextDay');
         $addTime = true;
     } elseif ($diff > -7) {
         $localeKeys = array('calendar', 'sameElse');
         $addTime = true;
     } else {
         $localeKeys = array('calendar', 'default');
     }
     // render format
     $format = MomentLocale::renderLocaleString($localeKeys, array($this));
     // add time if valid
     if ($addTime && $withTime === true) {
         $format .= ' ' . $renderedTimeString;
     }
     return $this->format($format);
 }
示例#8
0
 public function testLocaleDow()
 {
     //Test en_GB for Monday start of week
     Moment::setLocale('en_GB');
     //Expected Values
     $gb_start = new Moment('2015-04-27T00:00:00Z');
     $gb_end = new Moment('2015-05-03T23:59:59Z');
     //Current date: Middle of the week
     $gb = new Moment('2015-04-28T10:29:00Z');
     $this->assertTrue($gb->cloning()->startOf('week')->isSame($gb_start));
     $this->assertTrue($gb->cloning()->endOf('week')->isSame($gb_end));
     //Current Date: Beginning of the week
     $gb = new Moment('2015-04-27T10:29:00Z');
     $this->assertTrue($gb->cloning()->startOf('week')->isSame($gb_start));
     $this->assertTrue($gb->cloning()->endOf('week')->isSame($gb_end));
     //Current Date: End of week
     $gb = new Moment('2015-05-03T10:29:00Z');
     $this->assertTrue($gb->cloning()->startOf('week')->isSame($gb_start));
     $this->assertTrue($gb->cloning()->endOf('week')->isSame($gb_end));
     //Test en_US for Sunday start of week
     Moment::setLocale('en_US');
     //Expected Values
     $us_start = new Moment('2015-04-26T00:00:00Z');
     $us_end = new Moment('2015-05-02T23:59:59Z');
     //Current date: Middle of the week
     $us = new Moment('2015-04-28T10:29:00Z');
     $this->assertTrue($us->cloning()->startOf('week')->isSame($us_start));
     $this->assertTrue($us->cloning()->endOf('week')->isSame($us_end));
     //Current Date: Beginning of the week
     $us = new Moment('2015-04-26T10:29:00Z');
     $this->assertTrue($us->cloning()->startOf('week')->isSame($us_start));
     $this->assertTrue($us->cloning()->endOf('week')->isSame($us_end));
     //Current Date: End of week
     $us = new Moment('2015-05-02T10:29:00Z');
     $this->assertTrue($us->cloning()->startOf('week')->isSame($us_start));
     $this->assertTrue($us->cloning()->endOf('week')->isSame($us_end));
 }
示例#9
0
  <p class="indent-1">Format var_dump for readability:</p>
  <p class="indent-1">
    <?php 
$a = new stdCLass();
$a->firtName = "John";
$a->lastName = "Doe";
Debug::pVarDump($a);
?>
  </p>
  
  <h2>Dates and Times</h2>
  <p>Mutt-PHP supports a variety of time() manipulations through the moment class, most of which are just obfuscations of date() broken into a different syntax, with a little modularity to faciliate date math.</p>
  <p>If we assume that <code>$moment = new Moment()</code>, then:</p>
  <pre>
    <?php 
$moment = new Moment();
echo '<p>' . $moment->nowMMDDYYYY() . ' //echo $moment->nowMMDDYYYY();</p>';
echo '<p>' . $moment->nowYYYYMMDD() . ' //echo $moment->nowYYYYMMDD();</p>';
echo '<p>' . $moment->nowTimestamp() . ' //echo $moment->nowTimestamp();</p>';
?>
  </pre>

  <h2>Emailing</h2>
  <p>Mutt-PHP uses PHPMailer as a more robust alternative to mail(). The package is included as a composer dependency. Gor more infomation see <a href="https://github.com/PHPMailer/PHPMailer">PHPMailer on github</a>. Basic useage: </p>
  <pre>
  
$mail = new PHPMailer;

//$mail->SMTPDebug = 3;                               // Enable verbose debug output

$mail->isSMTP();                                      // Set mailer to use SMTP
 public function testHirbodIssueLocaleDate002()
 {
     // @see: https://github.com/fightbulc/moment.php/issues/61
     $moment = new Moment('2016-01-03 16:17:07', 'Europe/Berlin');
     $this->assertEquals('03. Dezember', $moment->subtractMonths(1)->format('d. F'));
 }
示例#11
0
$m = new Moment();
$response['test01'] = $m->format();
$m = new Moment('2012-05-15T12:30:00', 'CET');
$response['test02'] = $m->add('hours', 2)->format();
$m = new Moment('2012-05-15T12:30:00', 'CET');
$response['test03'] = $m->subtract('days', 7)->subtract('minutes', 15)->format();
$m = new Moment('2012-05-12T15:00:00');
$result = $m->from('2011-09-25T10:00:00');
$response['test04.01'] = $result['seconds'];
$response['test04.02'] = $result['minutes'];
$response['test04.03'] = $result['hours'];
$response['test04.04'] = $result['days'];
$response['test04.05'] = $result['weeks'];
$m = new Moment('2013-02-01T07:00:00');
$result = $m->fromNow();
$response['test05.01'] = $result['seconds'];
$response['test05.02'] = $result['minutes'];
$response['test05.03'] = $result['hours'];
$response['test05.04'] = $result['days'];
$response['test05.05'] = $result['weeks'];
$m = new Moment('2012-04-25T03:00:00', 'CET');
$response['test06.01'] = $m->format();
$response['test06.02'] = $m->setTimezone('UTC')->format();
$m = new Moment('2012-04-25T03:00:00', 'CET');
$response['test07'] = $m->format('l, dS F Y / H:i (e)');
// ############################################
$tmpl = join('', file('test.html'));
foreach ($response as $key => $value) {
    $tmpl = str_replace('{{' . $key . '}}', $value, $tmpl);
}
echo $tmpl;
示例#12
0
 /**
  * @param $period
  *
  * @return MomentPeriodVo
  * @throws MomentException
  */
 public function getPeriod($period)
 {
     switch ($period) {
         case 'week':
             $currentWeekDay = $this->format('N');
             $interval = $this->format('W');
             $start = new Moment('@' . $this->format('U'));
             $start->setTimezone($this->getTimezoneString())->subtractDays($currentWeekDay - 1)->setTime(0, 0, 0);
             $end = new Moment('@' . $this->format('U'));
             $end->setTimezone($this->getTimezoneString())->addDays(7 - $currentWeekDay)->setTime(23, 59, 59);
             break;
             // ------------------------------
         // ------------------------------
         case 'month':
             $maxMonthDays = $this->format('t');
             $currentMonthDay = $this->format('j');
             $interval = $this->getMonth();
             $start = new Moment('@' . $this->format('U'));
             $start->setTimezone($this->getTimezoneString())->subtractDays($currentMonthDay - 1)->setTime(0, 0, 0);
             $end = new Moment('@' . $this->format('U'));
             $end->setTimezone($this->getTimezoneString())->addDays($maxMonthDays - $currentMonthDay)->setTime(23, 59, 59);
             break;
             // ------------------------------
         // ------------------------------
         case 'quarter':
             $quarter = $this->getQuarter();
             $momentPeriodVo = MomentHelper::getQuarterPeriod($quarter, $this->getYear(), $this->getTimezoneString());
             $start = $momentPeriodVo->getStartDate();
             $end = $momentPeriodVo->getEndDate();
             $interval = $quarter;
             break;
             // ------------------------------
         // ------------------------------
         default:
             throw new MomentException("Period \"{$period}\" is not supported yet (supported are \"week\" and \"month\").", 500);
     }
     $momentPeriodVo = new MomentPeriodVo();
     return $momentPeriodVo->setRefDate($this)->setInterval($interval)->setStartDate($start)->setEndDate($end);
 }
示例#13
0
 public function testIsBetween()
 {
     $l = new Moment('2014-01-01T10:00:00Z');
     $r = new Moment('2014-01-01T12:00:00Z');
     $n = $l->cloning();
     $this->assertTrue($n->isBetween($l, $r, true));
     $this->assertFalse($n->isBetween($l, $r, false));
     $n = $r->cloning();
     $this->assertTrue($n->isBetween($l, $r, true));
     $this->assertFalse($n->isBetween($l, $r, false));
     //Minutes
     $l = new Moment('2014-01-01T10:30:30Z');
     $r = new Moment('2014-01-01T12:30:30Z');
     $n = new Moment('2014-01-01T10:30:00Z');
     $this->assertFalse($n->isBetween($l, $r, true));
     $n = new Moment('2014-01-01T12:30:45Z');
     $this->assertFalse($n->isBetween($l, $r, true));
     $n = new Moment('2014-01-01T10:30:00Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'minute'));
     $n = new Moment('2014-01-01T12:30:45Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'minute'));
     //Hour
     $n = new Moment('2014-01-01T10:29:00Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'minute'));
     $n = new Moment('2014-01-01T12:31:45Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'minute'));
     $n = new Moment('2014-01-01T10:29:00Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'hour'));
     $n = new Moment('2014-01-01T12:31:45Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'hour'));
     //Day
     $n = new Moment('2014-01-01T09:29:00Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'hour'));
     $n = new Moment('2014-01-01T13:31:45Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'hour'));
     $n = new Moment('2014-01-01T10:29:00Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'day'));
     $n = new Moment('2014-01-01T12:31:45Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'day'));
     //Month
     $l = new Moment('2014-01-10T10:30:30Z');
     $r = new Moment('2014-01-20T12:30:30Z');
     $n = new Moment('2014-01-09T09:29:00Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'day'));
     $n = new Moment('2014-01-21T13:31:45Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'day'));
     $n = new Moment('2014-01-09T10:29:00Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'month'));
     $n = new Moment('2014-01-21T12:31:45Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'month'));
     //year
     $l = new Moment('2014-04-10T10:30:30Z');
     $r = new Moment('2015-08-20T12:30:30Z');
     $n = new Moment('2014-03-09T09:29:00Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'month'));
     $n = new Moment('2015-09-21T13:31:45Z');
     $this->assertFalse($n->isBetween($l, $r, true, 'month'));
     $n = new Moment('2014-03-09T10:29:00Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'year'));
     $n = new Moment('2015-09-21T12:31:45Z');
     $this->assertTrue($n->isBetween($l, $r, true, 'year'));
 }