Разница между Time
и DateTime
связана с реализацией. DateTime
происходит от мира Rails и является произвольной датой со временем суток. Это скорее система на основе календаря. Time
измеряется как секунд с 1 января 1970 г. UTC и является агностиком часового пояса. В некоторых системах он ограничен значениями между 1901 и 2038 годами, ограничение того, как традиционно это значение сохраняется как 32-битное целое число, но более новые версии Ruby могут обрабатывать гораздо более широкий диапазон, используя 64-битное значение или BigNum как требуется.
Короче говоря, DateTime
- это то, что вы получаете из базы данных в Rails, где время - это то, что традиционно используется Ruby. Если вы работаете со значениями, в которых важны даты, и вы хотите знать такие вещи, как в конце месяца или в какой день будет шесть недель вперед, используйте DateTime. Если вы просто измеряете прошедшее время и не заботитесь об этом, используйте Time. Их легко конвертировать, если необходимо.
Date
С другой стороны, это только календарная дата и не имеет связанных времен. Вы можете использовать их там, где время не имеет значения.
strptime
не подходит для "время разбора", где strftime
предназначен для "форматирования времени". То есть strptime
является противоположностью strftime
, хотя они используют, как правило, ту же спецификацию форматирования. Я редко видел strptime
, используемый с DateTime.parse
, как правило, хорошо разбирается в происходящем, но если вам действительно нужно его прописать, обязательно используйте устаревший синтаксический анализатор.
Учитывая, что «26.04.2012», чтобы сохранить в базе данных, вы будете разбирать, а затем форматировать: Date.strptime («04/26/2017», «% m /% d /% Y»). strftime ('% Y-% m-% d') – Donato