-
-
Notifications
You must be signed in to change notification settings - Fork 691
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Creation from Excel Serial Dates #979
base: master
Are you sure you want to change the base?
Conversation
Codecov Report
@@ Coverage Diff @@
## master #979 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 10 10
Lines 2054 2064 +10
Branches 330 332 +2
=========================================
+ Hits 2054 2064 +10
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple of comments
@@ -1787,6 +1788,42 @@ def _get_tzinfo(tz_expr: Optional[TZ_EXPR]) -> dt_tzinfo: | |||
except parser.ParserError: | |||
raise ValueError(f"{tz_expr!r} not recognized as a timezone.") | |||
|
|||
@classmethod | |||
def excel_date( | |||
cls, delta: Union[int, float], default_windows_date: bool = True |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we change the kwarg to instead use the Microsoft terminology of 1900 and 1904 datesystem: https://docs.microsoft.com/en-us/office/troubleshoot/excel/1900-and-1904-date-system? Like make the kwarg 1904_date_system=True
? Or do you think using the OS names is clearer?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it makes more sense to use the 1900/1904 convention. I looked in Excel and that's what they end up of using.
if delta < 60: | ||
start_date = arrow.get("1899-12-31") | ||
else: | ||
start_date = arrow.get("1899-12-30") | ||
else: | ||
start_date = arrow.get("1904-01-01") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of using arrow.get()
you can call cls.get()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this PR be incorporating the decimal portion of the excel serial?
Yes it would. I can add test cases to make it more clear. |
Rather than creating a new function, I think it may be more consistent with our existing |
@jadchaar do you think that |
Pull Request Checklist
Thank you for taking the time to improve Arrow! Before submitting your pull request, please check all appropriate boxes:
tox
ormake test
to find out!).tox -e lint
ormake lint
to find out!).master
branch.If you have any questions about your code changes or any of the points above, please submit your questions along with the pull request and we will try our best to help!
Description of Changes
Closes: #977. New support for creation of Arrow objects from Excel Serial Dates. There seems to be an issue with the linting of the docs, after some tests have been run. Not too sure what it is at first glance.