mirror of
https://github.com/harttle/liquidjs.git
synced 2026-09-18 05:50:43 -07:00
fix(date): %s returns Unix epoch unaffected by display timezone (#932)
The %s handler read LiquidDate.getTime(), which returns the displayDate deliberately shifted by the display timezone offset for wall-clock getters. With a timezone argument or timezoneOffset option set, %s produced an epoch shifted by (server offset - display offset) instead of the true Unix timestamp. Expose the unshifted time as LiquidDate.dateValue() and use it for %s. Also switch Math.round to Math.floor so fractional seconds truncate toward the epoch like Ruby strftime. Fixes #931
This commit is contained in:
@@ -140,6 +140,18 @@ describe('filters/date', function () {
|
||||
it('should support timezone name argument when DST is active', function () {
|
||||
return test('{{ "2021-06-01T23:00:00Z" | date: "%Y-%m-%dT%H:%M:%S", "America/New_York" }}', '2021-06-01T19:00:00')
|
||||
})
|
||||
it('should not shift %s by the timezone name argument', function () {
|
||||
return test('{{ "2026-06-30T21:00:00Z" | date: "%s", "America/Toronto" }}', '1782853200')
|
||||
})
|
||||
it('should not shift %s by the timezone offset argument', function () {
|
||||
return test('{{ "2026-06-30T21:00:00Z" | date: "%s", 360 }}', '1782853200')
|
||||
})
|
||||
it('should not shift %s by the timezoneOffset option', function () {
|
||||
return test('{{ "2026-06-30T21:00:00Z" | date: "%s" }}', '1782853200', undefined, opts)
|
||||
})
|
||||
it('should truncate %s toward the epoch like Ruby strftime', function () {
|
||||
return test('{{ "2026-06-30T17:00:00.500Z" | date: "%s" }}', '1782838800')
|
||||
})
|
||||
it('should offset date literal with timezone 00:00 specified', function () {
|
||||
return test('{{ "1990-12-31T23:00:00+00:00" | date: "%Y-%m-%dT%H:%M:%S"}}', '1990-12-31T17:00:00', undefined, opts)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user