Есть ли техническая причина, почему, в программировании, формат даты по умолчанию-ГГГГММДД, а не что-то другое?

Есть ли технических причин, почему это так? Мне было интересно, в случае РСУБД, что это как-то связано с производительностью, так и "год" это более конкретный, чем а "месяц" Ну, например: у вас есть только один 2000 год, но каждый год на "январь", который будет легче/быстрее фильтровать/Сортировать что-то по года первый, и что'ы, почему год на первом месте.

Но я Дон'т знать, если это действительно имеет смысл... есть ли смысл вообще?

Комментарии к вопросу (23)

Таким образом, сроки могут легко быть отсортированы как строки по умолчанию сортировка правила (т. е. лексикографической сортировки).

Это также, почему и день и месяц указываются двумя цифрами (добавление ведущих нулей, если это необходимо).

На самом деле это один из форматов даты, определенной ИСО 8601. Этот стандарт также определяет дату и время создания, формат, `2015-03-27T15:26:наклонила 40z, которая также сортировать как строки.

Однако ГГГГММДД имеет дополнительное преимущество, что делает его можно легко (нет подстроки или символа замены участвует) разобрать строку как целое число, и до сих пор используют по умолчанию заказ на целые числа.

Комментарии (24)

Еще не упомянул, но вы быстро замазать заказа внутри гггг. Что's уже тысячелетия, века, десятилетия, годы. Это, так сказать, гггг уже заказал с максимальным сроком в кратчайшие сроки. То же самое касается мм и ДД, что's просто, как система работает.

Поэтому, чтобы сохранить порядок полей between соответствовать порядку полей within, единственный вариант-ГГГГММДД.

Как zahbaz и Арсений Муженко отметил, что ГГГГММДД легко форматах рода. Это не счастливое совпадение, что'ы прямое следствие вовлечения месторождения долгое время (и сохраняя длина фиксированная, мы представляем здесь проблема Y10K.)

Комментарии (8)

Есть ли какая-то причина вообще?

Да. Эти части программного обеспечения будет использовать ИСО 8601.

ИСО 8601 имеет ряд преимуществ по сравнению с другими форматами дат:

  • Он'ы с Документ спецификаций :)
  • Это'ы однозначно. ММ/ДД/гггг и ДД/ММ/гггг может быть запутывающим, если это's в прошлом 13-й день.
  • Это лексикографически сортирует в порядке возрастания времени, поэтому никаких специальных дата-логика сортировки не требуется. Это особенно полезно в именах файлов, где лексикографического количество сортировка часто сбивает с толку (например, 1_file, 10_file, 2_file).
  • Она предусматривает 4-значный год и дополняются нулями месяц и год. Это позволяет избежать "проблемы 2000 года" и другие неясности.

А почему ИСО 8601 существует, в первую очередь, это's, потому что люди стали замечать, дата-форматы неоднозначным и запутанным, когда обмен данными между странами/системы, и им нужно что-то однозначное.

Обоснование см. В спецификаций's введение.

хотя рекомендаций ИСО и стандартов в этой области были доступны с 1971 года, разных форм числовое представление даты и времени были в общем пользовании в разных странах. Где такие представлений осуществляется через национальные границы толкование значение цифры может происходит, что приводит в замешательство и другие косвенные ошибки или потери. Цель данного международного стандарта - исключите риск неправильного использования и чтобы избежать беспорядка и ее последствия.

...

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

Стандарт определяет “базовые” вариации как минимизация использования разделителей. Так, ГГГГММДД - это основная альтернативный в расширенном формате гггг-ММ-ДД.

Комментарии (4)

Это's, потому что все другие способы являются неоднозначными.

01/02/2003 что это значит? Второго января 2003 года? Или в Европе: 1 февраля 2003? Это становится еще хуже, если вы используете две цифры для года, как 01/02/03.

Вот почему вы используете ГГГГММДД, это'ы конвенции, которая позволяет нам четко сообщить о датах, 20030201 как дата-это всегда понятно. (и это делает его легче для сортировки)

(Сейчас Дон'т пойти хранить, что целое число 20 млн. 30 млн. 2 СТО и 1. пожалуйста, ОК? довольно пожалуйста?)

Комментарии (16)

Пусть Т1 и Т2 быть различных целых чисел, которые представляют собой два раза написано в ГГГГММДД форматирования. Тогда Т1 < Т2 означает, что Т2 произошел после Т1.

Вас потерять этот заказ с ДД и первом форматирование мм.

ИСО, ИМО, единственный разумный формат.

Комментарии (10)

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

Система не может знать, если в месяце 28, 29, 30 или 31 день, не зная конкретный год и месяц. Когда интерактивный ввод мандатов, что год и месяц прийти первым он может проверить, если день (последний вставлен) находится в разрешенном диапазоне.

Согласен, вопрос был в основном о формате даты, но можно утверждать, что формат даты следует форматирования для пользователя.

Комментарии (0)

ГГГГММДД заказы на нужные же вам номера заказов: самую значительную часть первого. ММДДГГГГ было бы как написать на "Сто двадцать три" как "Двадцать один сотни три".

В нашей культуре, мы имеем естественное понимание ММДДГГГГ, потому что, как люди, у нас есть осознание времени, и годы медленно. Как правило, мы знаем, какой сейчас год. Увидев год редко имеет значение, поэтому мы подтолкнуть ее к спине. Месяцев меняться достаточно быстро, чтобы сохранить их значение. Других культур справиться с этим differnently. Большая часть мира предпочитает ДДММГГГГ.

Комментарии (13)

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

Я знаю, такие сравнения имеют важное значение для сортировки, но это, как правило, полезно в течение 2 сортировки элементов.

Я работал на проектах, где это не было принято, и да, программисты пытались (с переменным успехом), чтобы сравнивать даты как строки.

Довольно форматирование на стороне клиента или набирание.

Комментарии (0)

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

Комментарии (0)

Это's о ограничений. Представьте себе год, месяц и день в качестве параметров, в формате ГГГГММДД каждого параметра является более строгим, чем предыдущий.

Поэтому если вы хотите найти что-то, что случилось в 1970 году, вы можете сделать это путем поиска в строке, начинающиеся на то"1970*" В, но если вы помните, что месяц можно добавить месяц, как в "197005*" в. Таким образом, каждый глаз "параметров" из даты дает вам более конкретную информацию.

Это'ы единственный способ, чтобы перейти от менее конкретная информация (в"1970*" В) для более конкретной информации (в"на&quot 19700523;).

Комментарии (4)

зачем, в программировании, формат даты по умолчанию-ГГГГММДД ...

Это's в понятном человеку формате для ввода и вывода, это's не обязательно хранятся таким образом.

На третий все языки программирования были разработаны в стране английского в качестве основного языка и в большинстве современных придерживаются стандартного ряда описание - международный стандарт для дат ИСО 8601.

Дополнительная информация: (ТМИ?)

Как меняется время, как правило, вперед, дней прирост первого, затем месяцев, и наконец лет - это может быть легче понять, если мы десятичной датыдесятичное время) - по прошествии времени количество становится больше. Это's просто легче для людей, чтобы посмотреть на количество и сравнить его на другую дату с первого взгляда.

Компьютер не'т помощь какие структуры вы хотите использовать, и в большинстве (но не все) компьютеры бинарной логики используется - база е на самом деле есть низкой радикса экономики но разве'т самый эффективного, ни простой для полный набор.

Фактический вход и выход формат даты зависит от страны и по локализация, в то время как ГГГГММДД может показаться, что имеет смысл и то, что вы привыкли к нему разве't универсальный сегодня, не так в прошлом долгое время, тем не менее, даже сегодня римские являются обычно используется для даты.

Зная год, заранее говорит вам, сколько дней в году, самая большая различия в продолжительности, что год может пройти. Это говорит вам заранее, количество дней в каждом месяце для подражания (для проверки ошибок во время ввода), разрешающий вход первого дня, возможно, придется тебя прикрывать если в следующем году не согласился с вашим участием - возможно, работает вход более сложных. Он также имеет важное значение с точки зрения формат календаря. См. также гик-Календарь, с его десятичной stardates.

Что касается компьютера, то она'ы, вероятно, использовать эпохи Unix. время, количество секунд, прошедших с 00:00:00 всемирного координированного времени (UTC), четверг, 1 января 1970 года, где каждый день считается, если он содержит ровно 86400 секунд. См. также Юлианский день. Формат ГГГГММДД просто предпочитают эгоцентричных людей, МАС рассматривает год как Юлианский год из 365,25 дня (31.5576 миллионов секунд), если не указано иное.

Комментарии (2)

Еще одно применение Я'вэ видел это представление, что вы можете хранить даты в виде целых чисел (т. е. в базе), используя только 4 байта на каждую дату. Используя затем ГГГГММДД означает, что число сравнений (часто одной машине инструкцию) имеют тот же результат, сравнение с даты представлены. И он печатает умеренно человека-читаемо. И все это не требует какого-либо кода или специальной поддержке на всех, в любой другой среде программирования.

Если эти вещи большинство из того, что вам нужно сделать, с датами, и вам нужно сделать много, то этот формат имеет большое обращение.

По сравнению с датами в распространенных форматов, таких как ДД/ММ/гггг займет 10 байт в виде строки символов ASCII. ГГГГММДД строки уменьшить до 8 и получить на "сравнение представлений имеет тот же результат, что сравнение дат" и преимущество, но даже тогда, на основе строки, сравнения посимвольно, а не одно целое сравнение.

Комментарии (1)

Же причине, что Луна сделана из зеленого сыра: это не так. В большинстве случаев формат по умолчанию какую-то локализованную строку. Иногда формат ISO используется, но обычно через дефис для лучшей читабельности. ГГГГММДД(или %Г%м%D в функцию strftime просторечии) редко по умолчанию. Чтобы быть справедливым, я уверен, я видел его, но я не могу вспомнить прямо сейчас.

Дата в Unix (GNU базовых утилит)

date

Выход:

Wed Sep 26 22:20:57 CEST 2018

Питон

import time
print(time.ctime())

выход:

Wed Sep 26 22:27:20 2018

С

#include 
#include 

int main () {
   time_t curtime;

   time(&curtime);
   printf(ctime(&curtime));
   return(0);
}

Выход:

Wed Sep 26 22:40:01 2018

На C++


#include 
#include 

int main()
{
    std::time_t result = std::time(nullptr);
    std::cout 
Комментарии (6)

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

Предположим, что вы'вновь пишу отчет, который суммирует события, такие как сумма и количество продаж. Дата продажи и времени хранится как YYYYMMDDHHMISS, вы просто должны держать левый 8 символов (если это's в строку) или деления целых чисел (т. е. пол) на 1000000, чтобы снизить datetime в день продажи.

Аналогично, если вы хотели в месяц's продаж, вы останетесь только в левом 6 цифр, или делить на 100,000,000

Конечно, вы можете возразить, что любое манипулирование строками можно, datetime для продажи "в 12-25-2018 12:34 вечера" и может быть substringed и манипулировать несколько раз, чтобы получить месяц и год. В числовой форме 122520181234 можно разделить и модом, и умножить, и разделить некоторые больше, и в итоге производят также месяц и год.. ..но код будет очень трудно писать, читать, поддерживать и понимать..

И даже опытные оптимизаторы базы данных может не быть в состоянии использовать индекс на столбце для предложения where, если дата ММ/ДД/гггг, но порезал и сложил вместе. Для сравнения, хранение ГГГГММДД представления и желая декабрь 2018 года ведет к тому, что положения Илька dateasstring как '201812%'или dateasint между 20181200 и 20181299 - то индекс может использоваться для

Таким образом, если там'т специальный тип данных для даты и строковые/числовые представления был единственный выбор, использование и хранение раз в некоторое представление длинн-интервала-на-лево-на-кратчайшего интервала-на-право имеет несколько преимуществ для простоты понимания, манипулирования, хранения, поиска и код обслуживания

Комментарии (0)