Обработка переполнения DateTime в JULIA - PullRequest
4 голосов
/ 23 апреля 2020

Я знаю, что Javascript Функция Date () может обрабатывать переполнения при вводе даты. Но в Юлии я получаю ошибку. Есть ли способ автоматически обрабатывать переполнения?

DateTime(2020, 4, 22, 15, 43, 67)  # ----> 2020-4-22T15:44:07
DateTime(2020, 12, 31, 23, 59, 60) # ----> 2021-1-1T00:00:00

1 Ответ

3 голосов
/ 24 апреля 2020

Я считаю полезным поведение по умолчанию для выдачи ошибки. Если вы хотите разрешить переполнение, вы можете определить свою собственную функцию для этого, например. как это:

julia> MyDateTime(y, m, d, h, mi, s) = 
           +(DateTime(0), Year(y), Month(m-1), Day(d-1),
             Hour(h), Minute(mi), Second(s))
MyDateTime (generic function with 1 method)

julia> MyDateTime(2020, 4, 22, 15, 43, 67)  # ----> 2020-4-22T15:44:07
2020-04-22T15:44:07

julia> MyDateTime(2020, 12, 31, 23, 59, 60) # ----> 2021-1-1T00:00:00
2021-01-01T00:00:00

Обратите внимание, что порядок операций там имеет значение - мы сначала опережаем год, затем месяц и т. д. c. (например, эффект увеличения времени на одну секунду может зависеть от месяца, года и дня):

julia> MyDateTime(2020, 2, 28, 23, 59, 60)
2020-02-29T00:00:00

julia> MyDateTime(2021, 2, 28, 23, 59, 60)
2021-03-01T00:00:00

(это может быть особенно сложно, если у вас есть очень большие и недопустимые значения месяца, дня и т. д.). c.)

...