Массив названий календарных месяцев или сокращений - PullRequest
1 голос
/ 18 апреля 2019

В базе R у нас есть легкий доступ к массиву, содержащему названия календарного месяца month.names, и к массиву, содержащему сокращения календарного месяца month.abb:

> month.name
# [1] "January"   "February"  "March"     "April"     "May"       "June" 
# [7] "July"      "August"    "September" "October"   "November"  "December"

> month.abb
# [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"

Аналогично, вВ Python в стандартной библиотеке calendar есть два объекта типа массива:

>>> from calendar import month_name, month_abbr
>>> list(month_name)
# ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
>>> list(month_abbr)
# ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

Имеет ли Джулия аналогичный массив названий месяцев в модуле стандартной библиотеки Dates или, возможно, стороннийпакет

Ответы [ 2 ]

4 голосов
/ 18 апреля 2019

@ hckr предоставил хороший ответ о том, где эти вещи в настоящее время хранятся внутри.Однако LOCALES не экспортируется Dates, и мы должны стараться избегать явного использования неэкспортированных объектов из модулей.В этом случае вы можете получить названия месяцев, используя (экспортированную) функцию monthname:

julia> monthname.(1:12)
12-element Array{String,1}:
 "January"  
 "February" 
 "March"    
 "April"    
 "May"      
 "June"     
 "July"     
 "August"   
 "September"
 "October"  
 "November" 
 "December" 
1 голос
/ 18 апреля 2019

Редактировать: см. Правильный ответ @Colin T Bowers.Вы должны использовать функции monthname, monthabbr, dayname, dayabbr для извлечения этих имен и сокращений, например, dayabbr.(1:7) или dayabbr(2).Эти функции также могут принимать аргумент locale для предоставления имен / сокращений на других языках / локалях.Мой ответ стал о том, где в настоящее время вещи хранятся внутри.

Имеет.Они хранятся в Dict для доступных локалей (по умолчанию только английский, хотя вы можете добавить и другие).Вы можете получить к ним доступ, например, Dates.LOCALES["english"].Это даст вам struct в следующей форме.

struct DateLocale
    months::Vector{String}
    months_abbr::Vector{String}
    days_of_week::Vector{String}
    days_of_week_abbr::Vector{String}
    month_value::Dict{String, Int}
    month_abbr_value::Dict{String, Int}
    day_of_week_value::Dict{String, Int}
    day_of_week_abbr_value::Dict{String, Int}
end

Итак, Dates.LOCALES["english"].months_abbr выдаст вам сокращения месяцев на английском языке в виде массива строк.Вы также можете получить дни недели и их сокращения.Вы также можете добавить другие локали к этому дикту, используя конструкторы DateLocale.

Информация в Dates.LOCALES['localename'] также используется при разборе дат в localename локали.

https://docs.julialang.org/en/v1/stdlib/Dates/index.html#Query-Functions-1

...