/**
* Standard gmdate() formats for the different timestamp types.
*/
- private static $formats = array(
+ private static $formats = [
TS_UNIX => 'U',
TS_MW => 'YmdHis',
TS_DB => 'Y-m-d H:i:s',
TS_RFC2822 => 'D, d M Y H:i:s',
TS_ORACLE => 'd-m-Y H:i:s.000000', // Was 'd-M-y h.i.s A' . ' +00:00' before r51500
TS_POSTGRES => 'Y-m-d H:i:s',
- );
+ ];
/**
* The actual timestamp being wrapped (DateTime object).
*
* @since 1.20
*
- * @param bool|string|int|float $timestamp Timestamp to set, or false for current time
+ * @param bool|string|int|float|DateTime $timestamp Timestamp to set, or false for current time
*/
public function __construct( $timestamp = false ) {
- $this->setTimestamp( $timestamp );
+ if ( $timestamp instanceof DateTime ) {
+ $this->timestamp = $timestamp;
+ } else {
+ $this->setTimestamp( $timestamp );
+ }
}
/**
* @throws TimestampException
*/
public function setTimestamp( $ts = false ) {
- $m = array();
- $da = array();
+ $m = [];
+ $da = [];
$strtime = '';
// We want to catch 0, '', null... but not date strings starting with a letter.
MWTimestamp $relativeTo = null,
User $user = null,
Language $lang = null,
- array $chosenIntervals = array()
+ array $chosenIntervals = []
) {
if ( $relativeTo === null ) {
$relativeTo = new self;
$diff = $this->diff( $relativeTo );
if ( Hooks::run(
'GetRelativeTimestamp',
- array( &$ts, &$diff, $this, $relativeTo, $user, $lang )
+ [ &$ts, &$diff, $this, $relativeTo, $user, $lang ]
) ) {
$seconds = ( ( ( $diff->days * 24 + $diff->h ) * 60 + $diff->i ) * 60 + $diff->s );
$ts = wfMessage( 'ago', $lang->formatDuration( $seconds, $chosenIntervals ) )
* Premade translations are not shipped as format() may return whatever the
* system uses, localized or not, so translation must be done through wiki.
*
- * @since 1.25
+ * @since 1.27
* @return Message The localized timezone message
*/
public function getTimezoneMessage() {