как правильно написать дату и время вместе
Письмовник
Как правильно записать дату?
Техническое оформление текста
Какую дату ставить в документе?
Датой документа считается дата его подписания, для акта – дата события, для протокола – дата заседания, принятия решения.
При написании даты используются арабские цифры (пара цифр для обозначения числа, пара цифр для месяца и четыре цифры для обозначения года), разделительный знак — точка:
Возможно также буквенно-цифровое обозначение даты: 5 марта 1999 г., 1 сентября 2007 г.
Как писать, с пробелом или без пробела: 1500г.; 150г. до н.э. / 1500 г., 150 г. до н. э.?
Графически наличие пробела – признак слова. Следует разделять все сокращения и цифры: 2007 г., 2008–2014 гг., с 2001 по 2008 г.
Можно ли так писать дату в документах: 19.04.08?
День месяца и месяц оформляются двумя парами арабских цифр (через точку), год – четырьмя арабскими цифрами: 19.04.2008.
Если дата записывается цифрами (22.08.2007), уместно ли после 2007 писать «года», и если уместно, то как правильно это делать?
Если в состав даты входит день месяца (число), месяц и год, то возможно различное написание:
Если дата записывается цифрами, то слово года или сокращение г. после даты не требуется.
Как правильно писать: 2000–2002 г.г. или 2000–2002 гг.?
Принятое сокращение слова годы – гг.
Следует писать: 2000–2002 гг. Такое сокращение читается как «двухтысячный – две тысячи второй годы».
Обратите внимание: между числами ставится тире, без пробелов с обеих сторон.
© 2000-2021. При полном или частичном использовании материалов ссылка на «Грамоту.ру» обязательна.
Свидетельство о регистрации СМИ Эл № ФС77-57155, выдано Роскомнадзором 11.03.2014.
Как правильно записать дату
Применяется два способа написания дат, оговоренные ГОСТ Р 6.30-2003 —цифровой и словесно-цифровой.
При написании даты используются арабские цифры (пара цифр для обозначения числа, пара цифр для месяца и четыре цифры для обозначения года), разделительный знак — точка:
27.08.2007,
01.09.2007.
Возможно также буквенно-цифровое обозначение даты: 5 марта 1999 г., 1 сентября 2007 г.
Цифровой способ
Цифровой способ является наиболее экономичным, поскольку сокращает длину написания даты и может одновременно служить кодом при обработке документов. Элементы даты приводятся одной строкой арабскими цифрами, отделенными точками, без переносов в такой последовательности: число, месяц, год. День месяца и месяц оформляются двумя парами арабских цифр (через точку), год – четырьмя арабскими цифрами: Например:
Словесно-цифровой способ
Словесно-цифровой способ имеет несколько разновидностей. На документах со сведениями финансового характера предыдущий пример выглядит следующим образом:
01 сентября 2012 года или 01 сентября 2012 г.
Если дата записывается цифрами, то слово года или сокращение г. после даты не требуется.
Если обозначение даты в тексте состоит только из года, слово «год» пишется полностью.
В первом квартале 2012 года.
Если дата состоит из месяца и года, квартала и года, полугодия и года, то ее написание имеет следующую форму:
Слова «год», «годы» сокращаются (г., гг.), если они приведены в датах с обозначением месяца, квартала, полугодия.
Слово «год» опускается при его цифровом обозначении на титульном листе, обложке, а также в выходных данных библиографического описания.
Календарные сроки в тексте пишутся так:
Период, ограниченный пределами двух лет или года и десятилетия, принятое сокращение слова годы – гг.
Обратите внимание: между числами ставится тире, без пробелов с обеих сторон.
Все виды некалендарных лет (учебный, бюджетный, отчетный год), т. е. начинающихся в одном году, а заканчивающихся в другом, пишут через косую черту:
В остальных случаях между годами ставится тире. Например: освободить от взимания налога в 2011—2012 гг.
Квартал обозначается римской цифрой, но полугодие пишется полностью:
При римских цифрах падежные окончания (наращения) не ставятся: в I квартале (но не в 1-м квартале).
Допускается оформление даты в следующей последовательности: год, месяц,день месяца, 2006.04.05. Это особенно удобно для поиска документов в больших архивах.
Международной организацией по стандартизации (ISO) в связи с внедрением информационных технологий рекомендуется универсальное цифровое обозначение дат. В соответствии с ГОСТ ИСО 8601-2001) пример написания даты 1 сентября 2006 года вы глядит следующим образом:
В тексте всех видов изданий, кроме изданий научно-технических документов, время дня обозначается в последовательности: часы, минуты,секунды. Например:
Следует различать число единиц времени, когда применяется сокращенное обозначение единиц (Прошло 6 ч 30 мин 45 с), от обозначения времени дня, когда чаще всего слова часы, минуты, секунды употребляются в развернутом виде (см. пример выше).
Форма представления времени дня в научно-технических документах установлена в ГОСТ ИСО 8601-2001. Последовательность написания та же, что и в других текстах, но между числами стандарт требуется ставить двоеточие: 23:30:10 (23 часа 30 минут 10 секунд). То же время дня с уменьшенной точностью: 23:30 (23 часа 30 минут).
Сокращенное представление: 30:10 (30 минут 10 секунд).
В названиях праздников и знаменательных дат с прописной буквы пишут первое число и имена собственные:
Если начальное порядковое числительное в таком названии написано цифрой, с прописной буквы пишется следующее за ним слово. Порядковое числительное при этом не имеет наращения: 1 Мая, 8 Марта.
Правильная работа с датой и временем
Практически все проекты сталкиваются с проблемами, вызванными неправильной обработкой и хранением даты и времени. Даже если проект используется в одном часовом поясе, все равно после перехода на зимнее/летнее время можно получить неприятные неожиданности. При этом мало кто озадачивается реализацией правильного механизма со старта, потому что кажется, что с этим проблем быть не может, так как все тривиально. К сожалению, в последствии реальность показывает, что это не так.
Логически можно выделить следующие типы значений, относящиеся к дате и времени:
Дата и время
Допустим, лаборатория, которая собрала материал для анализа находится в часовом поясе +2, а центральный филиал, в котором следят за своевременным выполнением анализов — в поясе +1. Время, приведенное в примере, было отмечено при сборе материала первой лабораторией. Возникает вопрос — какую цифру времени должен увидеть центральный офис? Очевидно, что программное обеспечение центрального офиса должно показывать 15 января 2014 года 12:17:15 — на час меньше, так как по их часам событие произошло именно в этот момент.
Рассмотрим одну из возможных цепочек действий, через которую проходят данные с клиента на сервер и обратно, позволяющую всегда корректно отображать дату/время согласно текущему часовому поясу клиента:
Правила перевода на летнее/зимнее время — вещь, строго говоря, переменная. Разные страны могут иногда менять свои правила, и эти изменения должны быть заблаговременно заложены в обновления системы. На практике неоднократно встречались ситуации некорректной работы этого механизма, которые по итогу решались установкой хотфиксов либо операционной системы, либо используемых сторонних библиотек. Вероятность повторения тех же проблем — не нулевая, поэтому лучше иметь способ гарантированно их избежать.
Учитывая описанные выше соображения, сформулируем как можно более надежный и простой подход к передаче и хранению времени: на сервере и в базе данных все значения должны быть приведены к часовому поясу UTC.
Рассмотрим, что нам дает такое правило:
Как видно из вышесказанного, не существует единого подхода, покрывающего 100% случаев. Поэтому сперва нужно четко понять из требований, какие из упомянутых выше ситуаций будут в вашей системе. С большой вероятностью, все ограничится первым предложенным подходом с хранением в UTC. Ну а описанные исключительные ситуации его не отменяют, а просто добавляют другие решения для частных случаев.
Дата без времени
Допустим, с правильным отображением даты и времени с учетом часового пояса клиента разобрались. Перейдем к датам без времени и примеру, указанному для этого случая в начале — «новый контракт вступает в силу 2 февраля 2016 года». Что будет, если для таких значений использовать те же типы и тот же механизм, что и для «обычных» даты с временем?
Есть несколько способов избежать преобразование для дат:
Временной интервал
С хранением и обработкой временных интервалов все просто: их величина не зависит от часового пояса, поэтому никаких особых рекомендаций здесь нет. Их можно хранить и передавать как количество единиц времени (целое или с плавающей точкой, в зависимости от необходимой точности). Если важна секундная точность — то как количество секунд, если миллисекундная — то как количество миллисекунд и т.д.
А вот вычисление интервала может иметь подводные камни. Предположим, у нас есть типовой код на C#, который считает интервал времени между двумя событиями:
На первый взгляд, никаких проблем здесь нет, но это не так. Во-первых, могут возникнуть проблемы с юнит-тестированием такого кода, но об этом мы поговорим чуть позже. Во-вторых, давайте представим, что начальный момент времени пришелся на зимнее время, а конечный — на летнее (например, таким образом замеряется количество рабочих часов, а у работников есть ночная смена).
Предположим, код работает в часовом поясе, в котором переход на летнее время в 2016 году происходит в ночь 27 марта, и смоделируем описанную выше ситуацию:
Этот код даст в результате 9 часов, хотя фактически между этими моментами прошло 8 часов. В этом легко убедиться, изменив код вот таким образом:
Отсюда вывод — любые арифметические операции с датой и временем нужно делать, используя либо UTC значения, либо типы, хранящие информацию о часовом поясе. А потом обратно переводить в локальные в случае надобности. С этой точки зрения, изначальный пример легко исправить, поменяв DateTime.Now на DateTime.UtcNow.
Этот нюанс не зависит от конкретной платформы или языка. Вот аналогичный код на Java, имеющий тот же недостаток:
Исправляется он также легко — например, использованием ZonedDateTime вместо LocalDateTime.
Расписание запланированных событий
Расписание запланированных событий – более сложная ситуация. Универсального типа, позволяющего хранить расписания, в стандартных библиотеках нет. Но такая задача возникает не так уж редко, поэтому готовые решения можно найти без проблем. Хорошим примером является формат планировщика cron, который в том или ином виде используется другими решениями, например, Quartz: http://quartz-scheduler.org/api/2.2.0/org/quartz/CronExpression.html. Он покрывает практически все нужды составления расписаний, включая варианты типа «вторая пятница месяца».
В большинстве случаев писать свой планировщик не имеет смысла, так как существуют гибкие проверенные временем решения, но если по какой-то причине есть надобность в создании своего механизма, то как минимум формат расписания можно позаимствовать у cron.
Общие рекомендации
Помимо описанных выше рекомендаций, посвященных хранению и обработке разнотипных значений времени, есть еще несколько других, о которых тоже хотелось бы сказать.
Во-первых, по поводу использования статических членов класса для получения текущего времени — DateTime.UtcNow, ZonedDateTime.now() и т.д. Как и было сказано, использование их напрямую в коде может серьезно усложнить юнит-тестирование, так как без специальных мок фреймворков подменить текущее время не получится. Поэтому, если вы планируете писать юнит тесты, следует позаботиться о том, чтобы реализацию таких методов можно было подменить. Для решения этой задачи есть как минимум два способа:
Второй нюанс с получением текущего времени — это то, что клиенту доверять нельзя. Текущее время на компьютерах пользователей может очень сильно отличаться от реального, и если есть логика, завязанная на него, то эта разница может все испортить. Все места, где есть необходимость получать текущее время, должны по возможности выполняться на стороне сервера. И, как уже было сказано ранее, все арифметические операции с временем должны производиться либо в UTC значениях, либо с использованием типов, хранящих смещение часового пояса.
И еще одна вещь, которую хотелось упомянуть — это стандарт ISO 8601, описывающий формат даты и времени для обмена информацией. В частности, строковое представление даты и времени, используемое при сериализации, должно соответствовать этому стандарту для предотвращения потенциальных проблем с совместимостью. На практике крайне редко приходится самому реализовывать форматирование, поэтому сам стандарт может быть полезен в основном в ознакомительных целях.
Правила написания, склонения и сокращения дат в тексте
В информационных и продающих текстах часто требуется указать день, месяц и год планируемого или произошедшего события. Важно помнить, как правильно писать даты. Рассмотрим разные способы оформления и склонения всех элементов календарных дат.
Пишем полное представление: день, месяц, год
Календарные даты, которые включают год, месяц и день месяца, встречаются в делопроизводстве. В соответствии с правилами написания дат выбирают написание арабскими цифрами или словами и цифрами.
Возьмите на заметку! Дата может записываться в обратной последовательности (год, месяц, день), если документ предназначен для архивации: 2019.04.09. Такое оформление удобно для поиска необходимого документа в архиве.
В научно-технической документации встречается цифровое оформление даты с указанием времени дня. Запись делается в следующей последовательности: часы, минуты или часы, минуты, секунды. Между элементами времени ставится двоеточие: 12:30 (12 часов и 30 минут).
В финансовых документах даты пишутся словами и цифрами. В соответствии с последними рекомендациями ГОСТ в реквизите документа допустимо написание числа без «0». Сравните : прежняя редакция — « 09 апреля 2019 г . », новая редакция — « 9 апреля 2019 г . ». При сокращении слова «год» обязательно ставится пробел и точка.
Словесное написание даты уместно только в специальных документах, например в доверенности: девятое апреля две тысячи девятнадцатого года.
Пишем частичное представление: месяц, год
При написании даты, которая состоит из месяца и года, полугодия и года следует воспользоваться следующими правилами написания дат:
Частичное представление: год, век, тысячелетие
Некалендарные даты ( например учебный или отчетный год), начинающиеся в одном, а заканчивающиеся в другом году, оформляются с использованием косой черты: в 2017/2018 учебном году.
В остальных случаях, е сли период ограничен несколькими годами или десятилетиями, то между числами ставится тире без пробела. А слово «годы» сокращается ( гг. ). Например : в 2013 — 2018 гг.
Если в тексте надо указать только год, то слово «год» не сокращается: в 2019 году.
Чтобы правильно написать даты, связанные с указанием на тысячелетие, эру, воспользуйтесь сокращением. П ример: в II тыс. до н. э. Обратите внимание на обязательную постановку пробелов между всеми сокращенными словами.
Как правильно склонять даты
Важно не только знать, как правильно пишутся даты, но и уметь склонять их. Цифры и слова в датах склоняются по-разному. Надо помнить, что изменяется только название дня месяца, а название месяц а и год не изменяются, остаются в родительном падеже : десятое апреля 2019 года, о десятом апреля 2019 года.
Возьмите на заметку! Дата не склоняется, если в тексте стоит после слов «дата» или «праздник». Например: чудесный праздник восьмое марта, о чудесном празднике восьмое марта.
Как правильно написать дату и время вместе
Применяется два способа написания дат — цифровой и словесно-цифровой.
Если дата состоит из месяца и года, квартала и года, полугодия и года, то ее написание имеет следующую форму: в апреле 2004 г.; в октябре-ноябре 2001 г.; в I квартале 2002 г.; в III-IV кварталах 2002 г.; в первом полугодии 2002 г.
Слова год, годы сокращаются (г., гг.), если они приведены в датах с обозначением месяца, квартала, полугодия. Слово год опускается при его цифровом обозначении на титульном листе, обложке, а также в выходных данных библиографического описания.
Период, ограниченный пределами двух лет или года и десятилетия, указывается: в 1992—1993 гг. ; в период 1985 г.—1990-е гг. (год и десятилетие).
Квартал обозначается римской цифрой, но полугодие пишется полностью: I квартал 2002 г. ; во втором полугодии 2002 г. При римских цифрах падежные окончания (наращения) не ставятся: в I квартале (но не в 1-м квартале ).
Форма представления времени дня в научно-технических документах установлена в ГОСТ ИСО 8601-2001. Последовательность написания та же, что и в других текстах, но между числами стандарт требует ставить двоеточие : 23:30:10 (23 часа 30 минут 10 секунд). То же время дня с уменьшенной точностью: 23:30 (23 часа 30 минут). Сокращенное представление: 30:10 (30 минут 10 секунд).
ГОСТ Р 6.30-2003. Унифицированные системы документации. Унифицированная система организационно-распорядительной документации. Требования к оформлению документов
ГОСТ ИСО 8601-2001. Система стандартов по информации, библиотечному и издательскому делу. Представление дат и времени. Общие требования.
Мильчин А.Э., Чельцова Л.К. Справочник издателя и автора. Редакционно-издательское оформление издания. 2-е издание, исправленное и дополненное.- М.: ОЛМА-Пресс, 2003
- как правильно написать дату и время в письме
- как правильно написать дату на английском языке в тетради в школе