Skip to content
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

Bibtex months are expected in English #29

merged 1 commit into from Jun 24, 2017


Copy link

@zeehio zeehio commented Jun 9, 2017

Most bibtex entries are in English, so we should expect the months to be in English as well. lubridate::parse_date_time uses the current locale instead of the English "C" locale.

When I get a bib entry from its DOI using DOIRefManageR::GetBibEntryWithDOI("10.1016/j.cccn.2004.04.023"), the year and month are specified as "2004" and "sep" respectively.

I get a warning when I try to print the entry. I have traced the warning to this function call:

RefManageR:::ProcessDate("2004", "sep")
#[1] "2004-01-01 CET"
#Warning messages:
#1: All formats failed to parse. No formats found. 
#2: In RefManageR:::ProcessDate("2004", "sep") :
# Failed to parse month: sep. Ignoring and using year only.

This issue happens because my locale is not English, so this is my workaround:

Sys.setlocale(locale="C") # default C locale
RefManageR:::ProcessDate("2004", "sep")
[1] "2004-09-01 UTC"

This PR tells lubridate to use the English locale to parse the month, fixing this issue.

Most bibtex entries are in English, so we should expect the months to be in English as well. `lubridate::parse_date_time` uses the current locale instead of the English "C" locale.
Copy link

Thanks for the pull request. Could you please tell me what version of lubridate you are using? Reading the NEWS for that package seems to indicate that this shouldn't be an issue with the latest version of lubridate on CRAN.

Copy link

Coverage Status

Coverage decreased (-0.01%) to 74.372% when pulling 6c65675 on zeehio:patch-1 into 5498e23 on mwmclean:master.

Copy link
Contributor Author

zeehio commented Jun 15, 2017

Oh right, I might have been at lubridate 1.5 (I am not in the computer now, but it was a CRAN installation). I'm sorry.

Just to stay on the safe side, maybe RefManageR could depend on lubridate >= 1.6 (instead of 1.5) so we guarantee this issue is fixed? I will check later the version to confirm, just in case.


Copy link

Yes, that's what I was planning, assuming that does indeed fix your issue.

Copy link
Contributor Author

zeehio commented Jun 16, 2017

I was using lubridate 1.6.0. There was a bug in lubridate with month capitalization that is fixed in the development version of lubridate: tidyverse/lubridate#529

The second example fails due to the month being in lower case:

  • lubridate::parse_date_time("2004-Sep-01", "%Y-%b-%d") (works on 1.6.0)
  • lubridate::parse_date_time("2004-sep-01", "%Y-%b-%d") (fails on the last 1.6.0 release, works in dev version)

So the solution here will be to depend on the next lubridate version. Feel free to close this pull request (or keep it open as a reminder).

Thanks for your time!

@mwmclean mwmclean merged commit 6c65675 into ropensci:master Jun 24, 2017
mwmclean added a commit that referenced this pull request Jun 24, 2017
@zeehio zeehio deleted the patch-1 branch February 18, 2018 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
None yet

Successfully merging this pull request may close these issues.

None yet

3 participants