Что лучший подход должен был ввести Дату/Время от пользователя?

j in zar будет сравнивать j с каждым элементом индекса zar .

Например,

0 in zar
# True

0 in zar.index
# True

Это также согласуется с поведением фреймов данных, для которых in по умолчанию выполняет тест членства для столбцов.

df = pd.DataFrame(columns=['a', 'b', 'c'])
'a' in df
# True

'd' in df
# False

Вам понадобится Series.eq (оператор ==) или Series.isin вместе с Series.any.

(zar == j).any()

Подробности
zar == j возвращает серию bools:

(zar == j)

0    False
1    False
2    False
3    False
4    False
5     True
6    False
7    False
8    False
9    False
Name: zar, dtype: bool

Затем вызывается any, который возвращает True, если Любой из рядов верен. Если вы хотите индекс значения True, используйте np.flatnonzero:

np.flatnonzero(zar == j)
# array([5])
15
задан Community 23 May 2017 в 11:48
поделиться

11 ответов

Дайте мне календарь для выбора даты с мышью. И позвольте мне ввести дату с клавиатурой. Примите как можно больше форматов. Если я должен войти 21 декабря 2012, позвольте мне использовать:

  • 21 декабря 2012
  • 21DEC2012
  • 21 декабря 2012
  • 21.12.2012 (или 21.12.2012, выберите один, возможно, в зависимости от того, какая страна я использую программное обеспечение в),
  • 12212012 (тот же вводный фрагмент как выше)
  • И т.д.

Независимо от того, что Вы решаете сделать для решения проблемы локализации, удостоверьтесь, что очевидно, что Вы ожидаете. Дайте мне пример или шаблон с MMDDYYYY то, что я могу заменить вводом с клавиатуры.

Не давайте мне выпадающие поля, куда я должен прокрутить, особенно в течение многих лет. Если я стар, и я ввожу свой DOB, я не имею достаточно времени в запасе в своей жизни для прокручивания вниз к нижней части выпадающего поля. Выпадающие поля являются хорошим шаблоном для использования, когда я не знаю, каковы опции, но если это - что-то, что я очень знаком с, как моя дата рождения, затем выпадающие меню являются стычкой.

Теперь, исходные данные времени WRT (Большой главный объект неприязни), не предполагайте, что я имел в виду 3:00. Если я ввожу 3 в течение времени, предполагаю, что имел в виду 15:00. Заставьте меня сделать дополнительную работу для планирования чего-то в 3:00. Если Вы чувствуете себя неловко из-за принятия так очень от моего имени, по крайней мере, предупреждаете меня, что я запланировал что-то в течение 3:00, таким образом, я смогу зафиксировать его теперь вместо позже, когда кто-то на моих электронных письмах списка приглашения события и говорит "Вас идиот, Вы запланировали нашу Встречу D&D в течение 3:00!"

12
ответ дан 1 December 2019 в 01:31
поделиться

Мое предпочтение для ввода текста с кнопкой замещающего знака рядом с ним:

Enter a date [        ] [...]

Замещающий знак открылся бы календарь для заполнения ввода текста, но пользователь может ввести на дате, если они хотят. Проверка должна быть сделана, когда кнопка "OK" для формы нажимается - пытающийся сделать, проверка даты на символе символьным основанием обречена, по моему опыту.

Проверка должна быть сложной и позволить выражения как

"today"
"Tomorrow"
"23 Jan"

и т.д.

Править: В ответ на некоторые комментарии можно было сделать проверку, когда текстовое редактирование теряет фокус (хотя я ненавижу такую вещь), в этом случае, контент редактирования мог измениться от "23 января" до "23-01-2009", чтобы указать, что exprssion был понят.

14
ответ дан 1 December 2019 в 01:31
поделиться

Я думаю, что запись диапазона дат на Google Calendar довольно хороша. Можно войти клавиатурой или мышью. Единственный каламбур был бы во вводе дат в течение другого года.

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

Date Entry Example

Time Entry Example

Править: В ответ на вопрос, "Что, если Вы хотите запланировать событие, которое идет с 23:00 во вторник до 1:00 в среду (говорят что ежедневная сборка, например)? Как Вы переносите время за полночь?"

Если "ко" времени продвигает его за полночь, то прокрутитесь "для" датирования к следующему дню. Это просто было бы частью бизнес-логики компонента. Вы заметите во втором изображении выше, выпадающее указывает и на время окончания и на продолжительность события, которое должно быть подсказкой.

alt text

При попытке положить конец дата ранее, чем дата начала, можно выделить цвет фона полей и/или показать сообщение об ошибке на сохранении.

alt text

Игра вокруг на Google Calendar и видит, как это ведет себя.

4
ответ дан 1 December 2019 в 01:31
поделиться

Я предложил бы, чтобы Вы также допускали пользователей, которым нравится вводить, а не нажимать на календарное управление, таким образом, комбинация текстового поля + раскрывающийся календарь работает хорошо.

Мы создали пользовательский элемент управления только с такой комбинацией. Пользователь может ввести дату во множестве форматов в текстовом поле или нажать на кнопку для появления календаря.

Мы позволяем все виды входа как "сегодня", "женимся", или "+2" (для послезавтра) и используем регулярные выражения для большей части стороны клиента проверки. Мы также делаем серверную проверку, конечно.

Управление также имеет дополнительное текстовое поле в течение времени, которое может быть включено или скрыто свойством. Мы чувствовали, что было легче отделиться, относятся ко времени. В течение многих времен мы позволяем "21:00", "2100", "09:00" и т.д.

Управление обслуживает в течение минуты и макс. даты, так, чтобы дата рождения могла иметь диапазон от, говорят-100 лет текущему году, в то время как истечение кредитной карты могло бы колебаться с текущего года до +5 лет, и таким образом, мы используем блоки проверки допустимости диапазона.

2
ответ дан 1 December 2019 в 01:31
поделиться

Текстовое поле со ссылкой изображения на всплывающий календарь на стороне является моим выбором. Лучший из обоих миров.

Если Вы хотите что-то дополнительное, Вы могли бы позволить синтаксическому анализатору даты/времени естественного языка как Хронический http://chronic.rubyforge.org/ приправить его.

Также не забывайте международных пользователей.

2
ответ дан 1 December 2019 в 01:31
поделиться

Если Вы идете для опции поля комбинированного списка/поля списка, удостоверяются, что Вы заставляете месяцы считать "Jan", "февраль"... "Декабрь", а не "1", "2"... "12".
Это - довольно раздражающая необходимость выяснить, какой слот является месяцем и который является днем согласно диапазонам значений.

1
ответ дан 1 December 2019 в 01:31
поделиться

Я пошел бы для трех альтернатив в зависимости от ситуации:

  1. 2 поля комбинированного списка. Один год списка + месяц, другой день
  2. 3 поля комбинированного списка. Годы списка, один месяц, дни
  3. Видимый calendar/s и комбинации как этот от YUI

И я полагаю, что существует больше опций, из которых я выбрал бы.

0
ответ дан 1 December 2019 в 01:31
поделиться

Необходимо проверить требования UI. Если Вы хотите поддерживающую сценарий поддержку только, они можно пойти с любым из panopoly сценариев и выполнения с любой датой/форматом времени, которую они обеспечивают в скрытое поле.

Однако при необходимости в пользовательской записи в текстовом поле затем Вы сталкиваетесь с некоторыми решениями:

  • Действительно ли дата/формат времени тверда? например, mm/dd/yyy hh:mm:ss формат только?
  • Или неточно определенный, для обеспечения "сегодня", "завтра", "23 января" разрабатывают записи?
  • Форматы будут определенными для локали? например, mm/dd/yyyy по сравнению с dd/mm/yyyy

Методы проверки зависят от Ваших решений о требованиях.

Мне нравится плагин средства выбора даты jQuery. Это позволит вывод в определенных форматах.

0
ответ дан 1 December 2019 в 01:31
поделиться

Календарь, показывающий несколько месяцев непрерывно: http://www.cs.helsinki.fi/u/salaakso/patterns/Calendar-Strip.html

0
ответ дан 1 December 2019 в 01:31
поделиться

Я всегда находил Google Calendar простым в использовании в этом отношении. Вы могли, конечно, сделать хуже, чем попытка эмулировать его. Ключ должен дать пользователю большую гибкость в том, как они вводят информацию. Например, я могу выбрать время из выпадающего списка или ввести его вручную, и когда я ввожу, я не обязан включать двоеточие или "m" в "пополудни".

0
ответ дан 1 December 2019 в 01:31
поделиться

Мне действительно нравится способ, которым работает виджет Даты/Времени QT4.

  • Можно ввести даты вручную (тип на дате в распространенных форматах).
  • Можно использовать колесико прокрутки для быстрого изменения полей даты/времени.
  • У Вас есть расширяемый календарь, который имеет выпадающие месяцы и вперед/назад стрелки в течение месяцев. Можно нажать на определенные дни и ввести год вручную, или с полем комбинированного списка (работы колесика прокрутки здесь также).

Вот короткое видео (~7.5MB), который показывает, как виджет работает и каковы некоторые его функции: Видео Здесь

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

Способность ввести относительные даты (сегодня, на прошлой неделе, 3 дня назад) удобна, но я не уверен, насколько практичный это было бы, учитывая стандартные вопросы как, "Какова Ваша дата рождения?", или, "Когда хотели бы Вы X отправленный по электронной почте Вам?".

0
ответ дан 1 December 2019 в 01:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: