You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
when parsing a javascript Date object to a python datetime object, playwright correctly parses the string with the UTC timezone, since that's how js dates are are stored internally:
however they do not get converted back to the browser context's timezone, which can be a source of bugs when working with datetimes in python, for example:
fromdatetimeimportdatetimefromplaywright.sync_apiimportsync_playwrightwithsync_playwright() aspw:
page= (
pw.chromium.launch(headless=False)
.new_context(timezone_id="Australia/Sydney")
.new_page()
)
# imagine we're getting a date from something on the page that we then need to then input into a date field,# in this case we get January 1 2020date: datetime=page.evaluate("() => new Date(2020,0,1)")
# we assume the timezone is correct, because the browser is configured to use that timezone, but once we try# to use the value, it's wrong (December 31 2019)page.locator("input").fill(date.strftime("%d/%m/%Y"))
i think the solution is for playwright to convert the datetime object to the browser context's timezone once it's already been parsed using UTC, so something like this:
if "d" in value:
# Node.js Date objects are always in UTC.
return datetime.datetime.strptime(
value["d"], "%Y-%m-%dT%H:%M:%S.%fZ"
- ).replace(tzinfo=datetime.timezone.utc)+ ).replace(tzinfo=datetime.timezone.utc).astimezone(context.timezone)
Example
No response
Motivation
this will make it less likely for users to accidentally introduce timezone-related bugs in their code.
The text was updated successfully, but these errors were encountered:
🚀 Feature Request
when parsing a javascript
Date
object to a pythondatetime
object, playwright correctly parses the string with the UTC timezone, since that's how js dates are are stored internally:playwright-python/playwright/_impl/_js_handle.py
Lines 243 to 247 in 445f80a
however they do not get converted back to the browser context's timezone, which can be a source of bugs when working with
datetime
s in python, for example:i think the solution is for playwright to convert the
datetime
object to the browser context's timezone once it's already been parsed using UTC, so something like this:Example
No response
Motivation
this will make it less likely for users to accidentally introduce timezone-related bugs in their code.
The text was updated successfully, but these errors were encountered: