Sdscompany.ru

Компьютерный журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Формат даты html

Новые типы элемента

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

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

В HTML5 из этого поведения извлекается польза. А именно, в элемент было добавлено несколько новых типов, и если какой-либо браузер не поддерживает их, он будет обрабатывать их как обычные текстовые поля. Например, для ввода адреса электронной почты можно создать поле нового типа email:

Если просматривать страницу с этим кодом в браузере, который не поддерживает тип email для элемента (например, Internet Explorer), то это поле отобразится как обычное текстовое поле. Но браузеры, поддерживающие формы HTML5 немного умнее могут делать следующее:

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

Предотвратить возможные ошибки. Например, браузер может не принимать буквы при вводе в поле типа number, или не принимать недопустимые даты, или вообще заставить пользователя выбирать даты из мини-календаря, что легче и безопаснее.

Выполнять проверку. Браузеры могут выполнять более сложные проверки после того, как пользователь нажмет кнопку для отправки данных.

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

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

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

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

Хотя мобильные браузеры Safari для iOS и Android не поддерживают проверку, предоставление этими браузерами специализированных клавиатур является значительным удобством, поэтому в приложениях для этих веб-обозревателей стоит использовать специальные типы данных.

Адреса электронной почты

Тип данных email используется для полей, предназначенных для ввода адресов электронной почты. В общем, адрес электронной почты состоит из строки символов (использование некоторых символов не допускается). Допустимый адрес должен содержать символ @ и точку, между которыми должен быть минимум один символ, а после точки — минимум два символа:

Тип email поддерживает атрибут multiple, который позволяет вводить несколько адресов в поле. Но эти несколько адресов все равно выглядят, как одна строка текста, только разделены запятыми.

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

URL-адреса

Тип url применяется для полей ввода URL-адресов. Вопрос, что является допустимым URL, продолжает горячо обсуждаться. Но большинство браузеров применяет сравнительно нестрогий алгоритм проверки. Адрес должен содержать префикс (который может быть как настоящим, типа http://, так и выдуманным, типа bonk//) и позволяет вводить пробелы и большинство специальных символов, за исключением двоеточия.

Некоторые браузеры также предлагают возможные варианты URL в выпадающем списке, которые обычно взяты из журнала недавно посещенных браузером страниц.

Поля поиска

Тип search применяется для полей поиска. Они обычно предназначены для ввода ключевых слов, по которым потом выполняется какой-либо вид поиска. Это может быть поиск по всему Интернету (как в Google), поиск по одной странице или же специальная поисковая процедура, которая исследует каталог информации. В любом случае поле поиска выглядит и ведет себя почти точно так же, как и обычное текстовое поле.

В некоторых браузерах, например Safari, поле поиска выглядит слегка по-другому и имеет скругленные углы. Кроме этого, когда пользователь начинает вводить данные в поле поиска в браузере Safari или Chrome, с правой стороны поля выводится небольшой значок в виде X, щелкнув по которому можно очистить поле.

За исключением этих незначительных различий, поле поиска является ничем иным, как обычным текстовым полем. Основная разница заключается в семантике. Иными словами, тип данных search используется для того, чтобы сделать ясным название поля для браузеров и вспомогательных программ для пользователей с ограниченными возможностями. Они могут направлять посетителей в требуемое место страницы или предоставлять другие, более интеллектуальные услуги — возможно в будущем.

Телефонные номера

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

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

Числа

В HTML5 определяются два числовых типа данных. Тип number предназначен для обычных чисел.

Этот тип данных имеет очевидный потенциал. Обычные текстовые поля принимают буквально все: цифры, буквы, пробелы, знаки пунктуации и т.п. По этой причине одна из самых распространенных задач проверки — убедиться, что значение является числом в определенном диапазоне. Но при вводе данных в поле типа number браузер автоматически игнорирует все символы, кроме цифр. Далее показан пример кода для создания поля этого типа:

Конечно же, есть много чисел, которые не подходят для каждого типа числовых данных. Например, в приведенной выше разметке разрешается возраст наподобие 43 000 или -6 лет, что несколько не соответствует реальности. Эта проблема решается с помощью атрибутов min и max. В следующем коде представлен пример ограничения возраста разумным диапазоном:

Обычно поля типа number принимают только целые числа, а дроби, например 30.5 не разрешаются. (Более того, некоторые браузеры даже не позволят ввести десятичный знак.) Но это поведение также можно изменить с помощью атрибута step, который указывает шаг изменения числа (в большую или меньшую сторону). Например, установив значение step в 0.1, можно вводить такие значения, как 0.1, 0.2 0.3 и т. д. Но попробуйте отправить форму со значением 0.15 и вы получите знакомое всплывающее сообщение об ошибке. По умолчанию значение шага равно 1.

Атрибут step также влияет на работу кнопок поля со счетчиком:

Ползунки

Другим числовым типом HTML5 является range. Подобно типу number, этот тип может представлять целые и дробные значения. Также поддерживает атрибуты min и max для установки диапазона значений. Далее показан пример кода для создания поля этого типа:

Разница состоит в том, каким образом поле типа range представляет свою информацию. Вместо счетчика, как для поля типа number, интеллектуальные браузеры отображают ползунок:

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

Дата и время

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

Читать еще:  Php and or

Ниже показан пример использования дат:

В таблице ниже перечислены шесть новых форматов HTML5 для дат и времени, дано их краткое описание:

Есть ли способ изменить формат ввода = «дата»?

560 Tural Ali [2011-09-10 16:33:00]

Я работаю с элементами HTML5 на своей веб-странице. По умолчанию type=»date» ввода type=»date» показывает дату как YYYY-MM-DD .

Вопрос в том, можно ли изменить его формат на что-то вроде: DD-MM-YYYY ?

date input html5 css3

14 ответов

488 Решение David Walschots [2012-03-01 18:59:00]

Невозможно изменить формат

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

Формат проводов Спецификация ввода даты HTML5 относится к спецификации RFC3339, которая определяет полноформатный формат, равный: yyyy-mm-dd. Более подробную информацию см. В разделе 5.6 спецификации RFC3339.

Формат представления Браузеры не ограничены тем, как они представляют ввод данных. На момент написания Chrome, Edge, Firefox и Opera была поддержка даты (см. Здесь). Все они отображают выбор даты и форматируют текст в поле ввода.

Форматирование текста поля ввода выполняется только в Chrome. Edge, Firefox и Opera отображают дату с днем, месяцем и годом в правильном порядке для локали, но непоследовательно используют косые черты ( 30/01/2018 ), где, например, ожидается, что тире ( 30-01-2018 ) формат календаря.

В Internet Explorer 9, 10 и 11 отображается текстовое поле ввода с форматом проводов.

104 SDude [2015-08-22 01:01:00]

Поскольку этот вопрос был задан, в веб-сфере произошло немало вещей, и одной из самых захватывающих является посадка веб-компонентов. Теперь вы можете решить эту проблему элегантно с помощью специального элемента HTML5, разработанного в соответствии с вашими потребностями. Если вы хотите переопределить/изменить работу любого тега html, просто создайте свою игру с теневым dom.

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

Вы можете начать с простого (и рабочего) решения, такого как datetime-input для полимера, который позволяет использовать тег, подобный этому:

или вы можете создавать креативные и всплывающие полные финалисты по стилю, как вы пожелаете, с желаемым форматированием и локалями, обратными вызовами и длинным списком параметров (у вас в вашем распоряжении целый пользовательский API!)

Соответствие стандартам, отсутствие хаков.

Дважды проверьте доступные полиполки, какие браузеры/версии они поддерживают, и если он покрывает достаточно% вашей пользовательской базы. Это 2018, так что, скорее всего, это наверняка охватит большинство ваших пользователей.

60 pmucha [2015-07-01 16:14:00]

Как уже упоминалось ранее, официально невозможно изменить формат. Однако можно создать поле, поэтому (с небольшой помощью JS) он отображает дату в желаемом формате. Некоторые из возможностей манипулировать вводом даты теряются таким образом, но если желание форсировать формат больше, это решение может быть способом. Поля даты сохраняются только так:

Он отлично работает на Chrome для рабочего стола, а Safari — на iOS (особенно желательно, поскольку собственные манипуляторы на сенсорных экранах непобедимы IMHO). Не проверял для других, но не ожидайте выхода из строя на любом Webkit.

43 John [2012-07-09 21:11:00]

  • RFC 3339/ISO 8601 «формат провода»: ГГГГ-ММ-ДД. Согласно спецификации HTML5, это формат, который должен использоваться для входного значения при отправке формы или при запросе через DOM API. Он не зависит от региона и региона.
  • Формат, отображаемый элементом управления пользовательским интерфейсом и принятый как пользовательский ввод. Поставщикам браузеров рекомендуется следить за выбором пользовательских предпочтений. Например, в Mac OS с областью «Соединенные Штаты», выбранной в области предпочтений «Язык и текст», Chrome 20 использует формат «m/d/yy».

Спецификация HTML5 не содержит каких-либо средств переопределения или вручную указывая любой формат.

Я считаю, что браузер будет использовать локальный формат даты. Не думайте, что это возможно. Разумеется, вы можете использовать персонализированный выбор даты.

После многих препятствий я придумал решение, позволяющее изменить формат. Существует несколько предостережений, но это можно использовать, если вы хотите последовательно показывать «Янв» или «01». Он работает в Chrome на Windows и Mac только из-за того, что Firefox еще не поддерживает собственные сборщики дат.

Google Chrome в своей последней бета-версии, наконец, использует вход type=date , а формат DD-MM-YYYY .

Таким образом, должен быть способ принудительного форматирования определенного формата. Я разрабатываю веб-страницу HTML5, и теперь поиск по дате терпит неудачу с различными форматами.

4 Miguel [2015-06-22 20:32:00]

Попробуйте, если вам нужно быстрое решение. Чтобы сделать yyyy-mm-dd go «dd-Sep -2016»

1) Создайте возле вашего ввода один класс span (действуйте как метка)

2) Обновляйте ярлык каждый раз, когда ваша дата изменяется пользователем или когда требуется загрузить данные.

Работает для мобильных браузеров веб-браузера, а указатели-события для IE11 + требуют jQuery и JQuery Date

3 ton [2015-06-01 16:28:00]

Как было сказано, не полностью реализована в большинстве браузеров, поэтому позвольте говорить о webkit как браузеры (хром).

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

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

Дата отображается как mm/dd/yyyy

Дата отображается как dd/mm/yyyy

Вы можете использовать http://lh.2xlibre.net/locale/pt_BR/ (изменить pt_BR по вашему языку), чтобы создать свой собственный язык и отформатировать даты, как вы хотите.

Вы можете видеть реальный текущий формат даты с помощью date :

Но поскольку LC_TIME и d_fmt , кажется, отклоняется хром (и я думаю, что это ошибка в webkit или хром), к сожалению он не работает.: ‘(

Таким образом, к сожалению, ответ, это переменная окружения IF LANG , не решает вашу проблему, еще нет способа.

После того, как я прочитал много дискуссий, я подготовил простое решение, но я не хочу использовать много JQuery и CSS, просто некоторые javascript.

JavaScript Форматы дат

Ввод даты JavaScript

Как правило, существуют 3 типа форматов ввода даты JavaScript:

Формат ISO соответствует строгому стандарту в JavaScript.

Другие форматы не так хорошо определены и могут быть специфичными для браузера.

Дата выхода JavaScript

Независимо от формата ввода, JavaScript будет (по умолчанию) выходными датами в формате полной текстовой строки:

JavaScript ISO даты

ISO 8601 является международным стандартом для представления дат и времени.

Синтаксис ISO 8601 (гггг-мм-DD) также является предпочтительным форматом даты JavaScript:

Пример (полная дата)

Вычисленная Дата будет относительно вашего часового пояса.
В зависимости от вашего часового пояса, результат выше будет меняться в период с 24 марта по 25 марта.

ISO даты (год и месяц)

Даты ISO могут быть написаны без указания дня (гггг-мм):

Пример

Часовые пояса будут варьироваться в результате выше между 28 февраля и 01 марта.

ISO даты (только год)

ISO даты могут быть написаны без месяца и дня (гггг):

Пример

Часовой пояс будет варьироваться в результате выше в период с декабря 31 2014 по Январь 01 2019.

ISO даты (Дата-время)

Даты ISO могут быть написаны с добавлением часов, минут и секунд (гггг-мм-ддсх: mm: ССЗ):

Пример

Дата и время отделены от прописных т.

Время UTC определяется прописной буквой Z.

Если требуется изменить время относительно UTC, удалите Z и Add + HH: мм или-HH: mm вместо:

Пример

UTC (Универсальное координированное время) совпадает с GMT (среднее время по Гринвичу).

Пропуск T или Z в строке даты-времени может дать другой результат в другом браузере.

Часовые пояса

При установке даты без указания часового пояса JavaScript будет использовать часовой пояс браузера.

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

Иными словами: Если дата/время создается в GMT (среднее время по Гринвичу), Дата/время будут преобразованы в CDT (центральное США дневное время), если пользователь переходит из центра США.

Короткие даты JavaScript.

Короткие даты написаны с помощью синтаксиса «mm/dd/гггг», как это:

Пример

Предупреждения!

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

Читать еще:  Html raw c

Поведение «гггг/мм/дд» не определено.
Некоторые обозреватели будут пытаться угадать формат. Некоторые будут возвращать NaN.

Поведение «DD-MM-гггг» также не определено.
Некоторые обозреватели будут пытаться угадать формат. Некоторые будут возвращать NaN.

Длинные даты JavaScript.

Длинные даты чаще всего пишутся с «МММ DD гггг» синтаксис, как это:

Пример

Месяц и день могут быть в любом порядке:

Пример

И, месяц может быть написана в полном объеме (январь), или сокращенно (январь):

Пример

Пример

Запятые игнорируются. Имена не чувствительны к регистру:

Пример

Дата ввода-анализ дат

Если имеется допустимая строка даты, можно использовать Метод Date. Parse () для преобразования его в миллисекунды.

Дата. Parse () возвращает число миллисекунд между датой и 1 января 1970:

Пример

Затем можно использовать число миллисекунд для преобразования его в объект Date:

Формат даты html

(PHP 4, PHP 5, PHP 7)

date — Форматирует вывод системной даты/времени

Описание

Возвращает строку, отформатированную в соответствии с указанным шаблоном format . Используется метка времени, заданная аргументом timestamp , или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .

Список параметров

Шаблон результирующей строки ( string ) с датой. См. параметры форматирования ниже. Также существует несколько предопределенных констант даты/времени, которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон ‘D, d M Y H:i:s’.

Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений. Z всегда возвращает при использовании gmdate() .

Замечание:

Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа integer , форматирующий символ u будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create() .

Необязательный параметр timestamp представляет собой метку времени типа integer , по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time() .

Возвращаемые значения

Возвращает отформатированную строку с датой. При передаче нечислового значения в качестве параметра timestamp будет возвращено FALSE и вызвана ошибка уровня E_WARNING .

Ошибки

Каждый вызов к функциям даты/времени при неправильных настройках временной зоны сгенерирует ошибку уровня E_NOTICE , и/или ошибку уровня E_STRICT или E_WARNING при использовании системных настроек или переменной окружения TZ . Смотрите также date_default_timezone_set()

Список изменений

Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE .

Примеры

Пример #1 Примеры использования функции date()

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

Пример #2 Экранирование символов в функции date()

Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .

Пример #3 Пример совместного использования функций date() и mktime()

Замечание:

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

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

Пример #4 Форматирование с использованием date()

Для форматирования дат на других языках используйте вместо date() функции setlocale() и strftime() .

Примечания

Замечание:

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

Начиная с PHP 5.1, временную метку начала запроса можно получить из поля $_SERVER[‘REQUEST_TIME’] .

Смотрите также

  • gmdate() — Форматирует дату/время по Гринвичу
  • idate() — Преобразует локальное время/дату в целое число
  • getdate() — Возвращает информацию о дате/времени
  • getlastmod() — Получает время последней модификации страницы
  • mktime() — Возвращает метку времени Unix для заданной даты
  • strftime() — Форматирует текущую дату/время с учетом текущих настроек локали
  • time() — Возвращает текущую метку системного времени Unix
  • strtotime() — Преобразует текстовое представление даты на английском языке в метку времени Unix
  • Предопределенные константы даты и времени

User Contributed Notes 18 notes

Things to be aware of when using week numbers with years.

Reason:
Y is year from the date
o is ISO-8601 year number
W is ISO-8601 week number of year

Conclusion:
if using ‘W’ for the week number use ‘o’ for the year.

For Microseconds, we can get by following:

echo date(‘Ymd His’.substr((string)microtime(), 1, 8).’ e’);

Thought, it might be useful to someone !

Prior to PHP 5.6.23, Relative Formats for the start of the week aligned with PHP’s (0=Sunday,6=Saturday). Since 5.6.23, Relative Formats for the start of the week align with ISO-8601 (1=Monday,7=Sunday). (http://php.net/manual/en/datetime.formats.relative.php)

This can produce different, and seemingly incorrect, results depending on your PHP version and your choice of ‘w’ or ‘N’ for the Numeric representation of the day of the week:

Prior to PHP 5.6.23, this results in:

Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 10 Oct 2016
Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 10 Oct 2016

Since PHP 5.6.23, this results in:

Today is Sun 2 Oct 2016, day 0 of this week. Day 1 of next week is 03 Oct 2016
Today is Sun 2 Oct 2016, day 7 of this week. Day 1 of next week is 03 Oct 2016

For HTML5 datetime-local HTML input controls (http://www.w3.org/TR/html-markup/input.datetime-local.html) use format example: 1996-12-19T16:39:57

To generate this, escape the ‘T’, as shown below:

this how you make an HTML5 tag correctly

in the «datetime» attribute you should put a machine-readable value which represent time , the best value is a full time/date with ISO 8601 ( date(‘c’) ) . the attr will be hidden from users

and it doesn’t really matter what you put as a shown value to the user,, any date/time format is okay !

This is very good for SEO especially search engines like Google .

If timestamp is a string, date converts it to an integer in a possibly unexpected way:

It’s common for us to overthink the complexity of date/time calculations and underthink the power and flexibility of PHP’s built-in functions. Consider http://php.net/manual/en/function.date.php#108613

FYI: there’s a list of constants with predefined formats on the DateTime object, for example instead of outputting ISO 8601 dates with:

instead, which is much easier to read.

If you have a problem with the different time zone, this is the solution for that.
getOffset ( $myDateTime );
return date ( $format , ( $timestamp != false ?(int) $timestamp : $myDateTime -> format ( ‘U’ )) + $offset );
>

/* Example */
echo ‘System Date/Time: ‘ . date ( «Y-m-d | h:i:sa» ). ‘
‘ ;
echo ‘New York Date/Time: ‘ . _date ( «Y-m-d | h:i:sa» , false , ‘America/New_York’ ). ‘
‘ ;
echo ‘Belgrade Date/Time: ‘ . _date ( «Y-m-d | h:i:sa» , false , ‘Europe/Belgrade’ ). ‘
‘ ;
echo ‘Belgrade Date/Time: ‘ . _date ( «Y-m-d | h:i:sa» , 514640700 , ‘Europe/Belgrade’ ). ‘
‘ ;
?>
This is the best and fastest solution for this problem. Working almost identical to date() function only as a supplement has the time zone option.

At least in PHP 5.5.38 date(‘j.n.Y’, 2222222222) gives a result of 2.6.2040.

So date is not longer limited to the minimum and maximum values for a 32-bit signed integer as timestamp.

One important thing you should remember is that the timestamp value returned by time() is time-zone agnostic and gets the number of seconds since 1 January 1970 at 00:00:00 UTC. This means that at a particular point in time, this function will return the same value in the US, Europe, India, Japan, .

date() will format a time-zone agnostic timestamp according to the default timezone set with date_default_timezone_set(. ). Local time. If you want to output as UTC time use:

The following function will return the date (on the Gregorian calendar) for Orthodox Easter (Pascha). Note that incorrect results will be returned for years less than 1601 or greater than 2399. This is because the Julian calendar (from which the Easter date is calculated) deviates from the Gregorian by one day for each century-year that is NOT a leap-year, i.e. the century is divisible by 4 but not by 10. (In the old Julian reckoning, EVERY 4th year was a leap-year.)

Читать еще:  Преобразовать html в xml

This algorithm was first proposed by the mathematician/physicist Gauss. Its complexity derives from the fact that the calculation is based on a combination of solar and lunar calendars.

In order to define leap year you must considre not only that year can be divide by 4!

The correct alghoritm is:

if (year is not divisible by 4) then (it is a common year)
else if (year is not divisible by 100) then (it is a leap year)
else if (year is not divisible by 400) then (it is a common year)
else (it is a leap year)

So the code should look like this:

Most spreadsheet programs have a rather nice little built-in function called NETWORKDAYS to calculate the number of business days (i.e. Monday-Friday, excluding holidays) between any two given dates. I couldn’t find a simple way to do that in PHP, so I threw this together. It replicates the functionality of OpenOffice’s NETWORKDAYS function — you give it a start date, an end date, and an array of any holidays you want skipped, and it’ll tell you the number of business days (inclusive of the start and end days!) between them.

I’ve tested it pretty strenuously but date arithmetic is complicated and there’s always the possibility I missed something, so please feel free to check my math.

The function could certainly be made much more powerful, to allow you to set different days to be ignored (e.g. «skip all Fridays and Saturdays but include Sundays») or to set up dates that should always be skipped (e.g. «skip July 4th in any year, skip the first Monday in September in any year»). But that’s a project for another time.

$e )
return networkdays ( $e , $s , $holidays );

// Find the ISO-8601 day of the week for the two dates.
$sd = date ( «N» , $s );
$ed = date ( «N» , $e );

// Find the number of weeks between the dates.
$w = floor (( $e — $s )/( 86400 * 7 )); # Divide the difference in the two times by seven days to get the number of weeks.
if ( $ed >= $sd ) < $w --; ># If the end date falls on the same day of the week or a later day of the week than the start date, subtract a week.

// Calculate net working days.
$nwd = max ( 6 — $sd , 0 ); # If the start day is Saturday or Sunday, add zero, otherewise add six minus the weekday number.
$nwd += min ( $ed , 5 ); # If the end day is Saturday or Sunday, add five, otherwise add the weekday number.
$nwd += $w * 5 ; # Add five days for each week in between.

// Iterate through the array of holidays. For each holiday between the start and end dates that isn’t a Saturday or a Sunday, remove one day.
foreach ( $holidays as $h ) <
$h = strtotime ( $h );
if ( $h > $s && $h

Or, if you just want to know how many work days there are in any given year, here’s a quick function for that one:

Date and Time Formats

Submitted to W3C 15 September 1997

Status of this document

This document is a NOTE made available by the W3 Consortium for discussion only. This indicates no endorsement of its content, nor that the Consortium has, is, or will be allocating any resources to the issues addressed by the NOTE.

This document is a submission to W3C from Reuters Limited. Please see Acknowledged Submissions to W3C regarding its disposition.

Comments on this document should be sent to datetime-comments@w3.org.

Abstract

This document defines a profile of ISO 8601, the International Standard for the representation of dates and times. ISO 8601 describes a large number of date/time formats. To reduce the scope for error and the complexity of software, it is useful to restrict the supported formats to a small number. This profile defines a few date/time formats, likely to satisfy most requirements.

Introduction

The International Standard for the representation of dates and times is ISO 8601. Its full reference number is ISO 8601 : 1988 (E), and its title is «Data elements and interchange formats — Information interchange — Representation of dates and times». A discussion of ISO 8601 has been written by Markus Kuhn.

ISO 8601 describes a large number of date/time formats. For example it defines Basic Format, without punctuation, and Extended Format, with punctuation, and it allows elements to be omitted. This profile defines a restricted range of formats, all of which are valid ISO 8601 dates and times. The aim is to simplify the use of ISO 8601 in World Wide Web-related standards, and to avoid the need for the developers and users of these standards to obtain copies of ISO 8601 itself.

A particular problem with ISO 8601 is that it allows the century to be omitted from years, which is likely to cause trouble as we approach the year 2000. This profile avoids the problem by expressing the year as four digits in all cases.

This profile may be adopted by standards which require an unambiguous representation of dates and times. As different standards have their own requirements regarding granularity and flexibility, this profile offers a number of options. An adopting standard must specify which of these options it permits.

Formats

Different standards may need different levels of granularity in the date and time, so this profile defines six levels. Standards that reference this profile should specify one or more of these granularities. If a given standard allows more than one granularity, it should specify the meaning of the dates and times with reduced precision, for example, the result of comparing two dates with different precisions.

The formats are as follows. Exactly the components shown here must be present, with exactly this punctuation. Note that the «T» appears literally in the string, to indicate the beginning of the time element, as specified in ISO 8601.

This profile does not specify how many digits may be used to represent the decimal fraction of a second. An adopting standard that permits fractions of a second must specify both the minimum number of digits (a number greater than or equal to one) and the maximum number of digits (the maximum may be stated to be «unlimited»).

This profile defines two ways of handling time zone offsets:

  1. Times are expressed in UTC (Coordinated Universal Time), with a special UTC designator («Z»).
  2. Times are expressed in local time, together with a time zone offset in hours and minutes. A time zone offset of «+hh:mm» indicates that the date/time uses a local time zone which is «hh» hours and «mm» minutes ahead of UTC. A time zone offset of «-hh:mm» indicates that the date/time uses a local time zone which is «hh» hours and «mm» minutes behind UTC.

A standard referencing this profile should permit one or both of these ways of handling time zone offsets.

Examples

1994-11-05T08:15:30-05:00 corresponds to November 5, 1994, 8:15:30 am, US Eastern Standard Time.

1994-11-05T13:15:30Z corresponds to the same instant.

Acknowledgments

This document draws on Chris Newman’s Internet Draft «Date and Time on the Internet» (draft-newman-datetime-01.txt).

Ссылка на основную публикацию
Adblock
detector