Page MenuHomePhabricator

ConvertibleTimestamp accepts some weird, invalid-seeming time strings
Closed, ResolvedPublic

Description

I've indicated the "TS" comment from setTimestamp() responsible for each example.

-- TS_ISO_8601, any number of periods before the fractional seconds. Or not before fractional seconds
>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22T12:00:00.....1257' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22T12:00:001257' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22T12:00:00.....' )
=> "2019-05-22T12:00:00Z"

-- TS_ISO_8601_BASIC, same
>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '20190522T120000.....1257' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '20190522T1200001257' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '20190522T120000.....' )
=> "2019-05-22T12:00:00Z"

-- TS_POSTGRES (first), same
>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22 12:00:00....1257-04' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22 12:00:001257-04' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22 12:00:00...-04' )
=> "2019-05-22T12:00:00Z"

-- TS_POSTGRES (second), same
>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22 12:00:00....1257 GMT' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22 12:00:001257 GMT' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, '2019-05-22 12:00:00... GMT' )
=> "2019-05-22T12:00:00Z"

-- TS_RFC2822, anything strtotime accepts goes, with potentially strange results
>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wed, 22 May 2019 12:00:00 A potato' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wed, 22 May 2019 12:00:00 + 2 days' )
=> "2019-05-24T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wed, 22 May 2019 12:00:00 Monday' );
=> "2019-05-27T00:00:00Z"

-- TS_RFC850, same
>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wednesday, 22-May-19 12:00:00 A potato' )
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wednesday, 22-May-19 12:00:00 + 2 days' )
=> "2019-05-24T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wednesday, 22-May-19 12:00:00 Monday' )
=> "2019-05-27T00:00:00Z"

-- asctime, same
>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wed May 22 12:00:00 2019 A potato' );
=> "2019-05-22T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wed May 22 12:00:00 2019 + 2 days' );
=> "2019-05-24T12:00:00Z"

>>> Wikimedia\Timestamp\ConvertibleTimestamp::convert( TS_ISO_8601, 'Wed May 22 12:00:00 2019 Monday' );
=> "2058-01-28T00:00:00Z"

Event Timeline

Change 512071 had a related patch set uploaded (by Anomie; owner: Anomie):
[mediawiki/libs/Timestamp@master] Honor timezones in input, and correct some odd accepted values

https://gerrit.wikimedia.org/r/512071

Change 512071 merged by jenkins-bot:
[mediawiki/libs/Timestamp@master] Honor timezones in input, and correct some odd accepted values

https://gerrit.wikimedia.org/r/512071