Как ввести год и месяц?

#tcl

#tcl

Вопрос:

Я пытаюсь ввести строки даты, содержащие месяц и год, например, январь 2000 года.

Согласно справочной странице, %B (и %b) «При вводе соответствует названию месяца в данном языковом стандарте (в сокращенной или полной форме или в любом уникальном префиксе любой формы)», но я не могу заставить это работать:

 % clock scan "January 2000" -format "%B %Y"
1475881200
% clock format 1475881200 -format "%B %Y"
October 2016
  

Мне кажется, что Tcl чего-то не понимает и по умолчанию соответствует сегодняшней дате.

Я бы хотел, чтобы моя команда возвращала 946684800 результат [clock scan 2000-01-01 -format %Y-%M-%D]

Есть ли проблема с [clock scan] документацией или моим чтением документов?

Ответ №1:

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

 % clock scan "1 January 2000" -format "%d %B %Y"
946684800
% clock format 946684800
Sat Jan 01 00:00:00 GMT 2000
  

Хотя да, я полагаю, что это ошибка (и вам, вероятно, следует сообщить об этом на core.tcl-lang.org отслеживание проблем), добавляя в (поддельный?) день месяца кажется достаточно простым обходным путем. В конце концов, без этого должен ли анализатор по умолчанию использовать текущий день месяца или первый или какой-либо другой день? Какой репрезентативный день? Укажите это, и проблема исчезнет.

Комментарии:

1. «Добавить фиктивный день». Спасибо. Я, должно быть, теряю хватку:-(. Я не смог найти средство отслеживания проблем на core.tcl-lang.org Согласен, принимая во внимание поднятые вами вопросы, что, вероятно, лучше оставить все как есть, поэтому был бы (был) рад видеть, что такая проблема закрыта достаточно быстро.

Ответ №2:

Интересный вопрос. Похоже, вам также нужно указать день

 $ echo 'puts [clock format [clock scan "January 2000" -format "%B %Y"]]' | tclsh8.6
Sat Oct 08 00:00:00 EDT 2016

$ echo 'puts [clock format [clock scan "1 January 2000" -format "%d %B %Y"]]' | tclsh8.6
Sat Jan 01 00:00:00 EST 2000
  

Я вижу в документации (http://tcl.tk/man/tcl8.6/TclCmd/clock.htm ) раздел, начинающийся с

Дата определяется в соответствии с полями, которые присутствуют в предварительно обработанной строке формата. В порядке предпочтения:

окончание

  1. Если ни одно из приведенных выше правил не приводит к полезной дате, используется дата базового времени в данном часовом поясе.

Вероятно, это в # 3, где вы ожидаете совпадения, но это не так.