Skip to content

Conversation

@khaledalam
Copy link

Description

This PR adds support for decimal values in relative time expressions (e.g., 2.5 weeks, 1.5 days, 3.14159 hours).

Fixes: php/php-src#21027

PR on php-src: php/php-src#21034

Problem

strtotime("2.37685 weeks") returned incorrect result (~414 million seconds instead of ~1.4 million) because:

  • "2.37" matched timeshort24 pattern (hour:minute with dot separator)
  • "685 weeks" was parsed as separate relative offset

Changes

  • Added reldecimalnumber regex pattern for decimal numbers
  • Added reldecimal lexer rule to match decimal relative expressions
  • Added timelib_get_decimal_nr() helper to parse decimal values
  • Added timelib_set_relative_decimal() to convert decimal units to seconds
  • Added test cases for decimal relative time parsing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

strtotime() has strange interpretation of decimal weeks

1 participant