Как посмотреть текущее время на сайте

Как посмотреть текущее время на сайте

Доброго времени суток! Эта статья будет короткой, но тем не менее, вопрос которому она посвящена достаточно часто встречается у начинающих программистов. А расскажу я в этой статье как можно узнать (получить) текущее время в программе, написанной на C#. Ну а чтобы эта статья не была уж очень короткой,  я немного затрону и вопрос форматирования даты/времени при выводе пользователю (отображении). А теперь приступим к делу. Ниже приведен код консольной программы, которая получает текущие дату и время и выводит их в консоль. Посмотрев на этот код Вы поймете, насколько это просто…

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GetTime
{
class Program
{
static void Main(string[] args)
{
//Текущие дата/время хранятся в свойстве Now класса DateTime

Console.WriteLine(DateTime.Now); //Получаем текущие дату и время, выводим их в консоль
//Чтобы программа сразу же не закрылась
Console.ReadKey();
}
}
}

Как можно было заметить из приведенного выше примера, текущие дата и время возвращаются статическим свойством «Now» класса «DateTime», соответственно для получения текущих даты и времени в нужном месте программы мы просто вставили «DateTime.Now». Причем в нашем случае, мы сразу же и вывели в консоль полученную информацию.

Свойство «Now» класса «DateTime» возвращает объект типа «DateTime», а при выводе в консоль, автоматически вызвался метод «ToString» данного класса.

То что метод «ToString» в нашем случае вызывается автоматически довольно удобно, если бы не одно но… В таком случае, мы получаем отформатированные по умолчанию вывод даты и времени. Если запустить программу на моем ПК, то получится примерно следующее:

Как посмотреть текущее время на сайте

Результат вывода отформатированной по умолчанию даты (и времени)

Т.е.

мы увидели на экране текущие и дату и время, причем в жестко определенном формате (и в каком именно, решали не мы)… А если нужно вывести только время (без даты)? Или указать не номер месяца, а его название? К счастью, при разработке в C# продумали эти варианты. Метод «ToString» класса «DateTime» имеет несколько вариантов перегрузки. И один из них мы как раз и будем использовать, чтобы получить нужный нам результат. Смотрите пример кода, приведенный ниже:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace GetTime
{
class Program
{
static void Main(string[] args)
{
//Текущие дата/время хранятся в свойстве Now класса DateTime

Console.WriteLine(DateTime.Now.ToString(«HH:mm:ss»)); //Выводим только время

Console.WriteLine(DateTime.Now.ToString(«dd MMMM yyyy»)); //Выводим дату, выводится название месяца а не его номер

//Чтобы программа сразу же не закрылась
Console.ReadKey();
}
}
}

В примере мы сначала выводим исключительно время (для этого в качестве параметра метода «ToString» передаем строку «HH:mm:ss»), а потом выводим дату (передав строку «dd MMMM yyyy») в тот же метод. В результате получим следующий вывод в консоль:

Как посмотреть текущее время на сайте

Форматированный вывод даты и времени

Строки, которые мы указывали в качестве параметра метода «ToString» представляют собой формат вывода (нужный нам). Давайте для примера разберем строку значение формата «HH:mm:ss»:

  • «HH» означает что в этом месте нужно вывести часы в 24-часовом формате;
  • «:» просто разделить (тут может быть и другой символ, например, пробел или слэш…);
  • «mm» означает что в этом месте нужно вывести минуты ( в формате «00»-«59»);
  • «ss» означает что в этом месте нужно вывести секунды (в формате «00»-«59»).

Подробнее о форматированном выводе (преобразовании в строку) я расскажу в отдельной статье, а сейчас напомню, чтобы получить (узнать) текущие дату и время в своей программе, просто вставьте в нужно место «DateTime.Now». Например так:

//Получим текущее время (и дату) и сохраним её в переменную nowTime
DateTime nowTime = DateTime.Now;

На сегодня всё…

Источник: http://plssite.ru/csharp/csharp_get_current_time_acticle.html

Время на сайте в Метрике

Одним из главных показателей качества сайта принято считать «время на сайте». Это не совсем правильный подход, Во-первых, этот показатель явно не определяет качество вашего сайта. Во-вторых, не всегда точно можно получить данные о продолжительности нахождения посетителя на сайте. Разберем причины сложности определения этого параметра.

Время на сайте в Яндекс.Метрике — это средняя продолжительность визита. Как рассчитывается этот показатель?  На этот вопрос отвечает развернутое определение от Яндекса:

Время на сайте – это среднее время, проведённое на сайте посетителями. Рассчитывается как разница между временем последнего и первого зарегистрированного просмотра страницы посетителем в рамках одного визита.

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

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

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

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

Как узнать реальное «Время на сайте»?

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

Рассмотрим реальный пример — посетитель перешел из поисковой системы на страницу большой статьи, в Вебвизоре видим данные посетителя с глубиной просмотра 1, но с проведенным временем более 14 минут, со средней активностью. В сводках по этому посетителю «Время на сайте» — 0:14.

Как посмотреть текущее время на сайте

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

Судя по всему в сводке таким посещениям присваивается время 14 или 15 секунд. Почему так получается, что «Время на сайте» отличается внутри одной системы аналитики, но в разных отчетах? Приведем официальный ответ представителя Яндекса:

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

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

Показатель «Время на сайте» в сводке не передает реально проведенное время на сайте, необходимо получать данные из Вебвизора. И наше субъективное мнение, это недостаток системы аналитики (не только Метрики).

Остается надеется, что Яндекс найдет способ исправить это несоответствие в ближайшее время.

Источник: https://professional-web.ru/vremya-na-sayte/

Как узнать текущее дату и время с сервера?

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

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

Компьютер его сам подводит если он не соответствует времени сервера.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;

using System.Net.Sockets;

namespace ConsoleApp7
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine(GetNetworkTime());
Console.ReadKey();

}

public static DateTime GetNetworkTime()
{
const string ntpServer = «pool.ntp.org»;
// NTP message size — 16 bytes of the digest (RFC 2030)
var ntpData = new byte[48];

//Setting the Leap Indicator, Version Number and Mode values
ntpData[0] = 0x1B; //LI = 0 (no warning), VN = 3 (IPv4 only), Mode = 3 (Client Mode)

var addresses = Dns.GetHostEntry(ntpServer).AddressList;

//The UDP port number assigned to NTP is 123
var ipEndPoint = new IPEndPoint(addresses[0], 123);
//NTP uses UDP
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
{
socket.Connect(ipEndPoint);

//Stops code hang if NTP is blocked
socket.ReceiveTimeout = 3000;

socket.Send(ntpData);
socket.Receive(ntpData);
}

//Offset to get to the «Transmit Timestamp» field (time at which the reply
//departed the server for the client, in 64-bit timestamp format.»
const byte serverReplyTime = 40;

//Get the seconds part
ulong intPart = BitConverter.ToUInt32(ntpData, serverReplyTime);

//Get the seconds fraction
ulong fractPart = BitConverter.ToUInt32(ntpData, serverReplyTime + 4);

//Convert From big-endian to little-endian
intPart = SwapEndianness(intPart);
fractPart = SwapEndianness(fractPart);

var milliseconds = (intPart * 1000) + ((fractPart * 1000) / 0x100000000L);

//**UTC** time
var networkDateTime = (new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc)).AddMilliseconds((long)milliseconds);

return networkDateTime.ToLocalTime();
}

// stackoverflow.com/a/3294698/162671
static uint SwapEndianness(ulong x)
{
return (uint)(((x & 0x000000ff) 8) +
((x & 0xff000000) >> 24));
}

}
}

using System.Collections.Generic;using System.Threading.Tasks;using System.Net.Sockets;        static void Main(string[] args)            Console.WriteLine(GetNetworkTime());        public static DateTime GetNetworkTime()            const string ntpServer = «pool.ntp.org»;            // NTP message size — 16 bytes of the digest (RFC 2030)            var ntpData = new byte[48];            //Setting the Leap Indicator, Version Number and Mode values            ntpData[0] = 0x1B; //LI = 0 (no warning), VN = 3 (IPv4 only), Mode = 3 (Client Mode)            var addresses = Dns.GetHostEntry(ntpServer).AddressList;            //The UDP port number assigned to NTP is 123            var ipEndPoint = new IPEndPoint(addresses[0], 123);            using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))                socket.Connect(ipEndPoint);                //Stops code hang if NTP is blocked                socket.ReceiveTimeout = 3000;            //Offset to get to the «Transmit Timestamp» field (time at which the reply             //departed the server for the client, in 64-bit timestamp format.»            const byte serverReplyTime = 40;            ulong intPart = BitConverter.ToUInt32(ntpData, serverReplyTime);            //Get the seconds fraction            ulong fractPart = BitConverter.ToUInt32(ntpData, serverReplyTime + 4);            //Convert From big-endian to little-endian            intPart = SwapEndianness(intPart);            fractPart = SwapEndianness(fractPart);            var milliseconds = (intPart * 1000) + ((fractPart * 1000) / 0x100000000L);            var networkDateTime = (new DateTime(1900, 1, 1, 0, 0, 0, DateTimeKind.Utc)).AddMilliseconds((long)milliseconds);            return networkDateTime.ToLocalTime();        // stackoverflow.com/a/3294698/162671        static uint SwapEndianness(ulong x)            return (uint)(((x & 0x000000ff) 24));
Читайте также:  Как определить, врет тебе человек или нет

Есть и более короткая версия программы, основана на другом протоколе работы, однако сервер там забугорный и что бы получить время по МСК придется прибавить +3 часа.

Приведу список рабочих серверов синхронизации времени:

ntp1.stratum2.ru
ntp2.stratum2.ru
ntp3.stratum2.ru
ntp4.stratum2.ru
ntp5.stratum2.ru
ntp1.stratum1.ru
ntp2.stratum1.ru
ntp3.stratum1.ru
ntp4.stratum1.ru
ntp5.stratum1.ru

static void Main(string[] args)
{
StreamReader rdr = new StreamReader(new TcpClient(«time-a.timefreq.bldrdoc.gov», 13).GetStream());
Console.WriteLine(rdr.ReadToEnd());

Console.ReadKey();

}

static void Main(string[] args)            StreamReader rdr = new StreamReader(new TcpClient(«time-a.timefreq.bldrdoc.gov», 13).GetStream());            Console.WriteLine(rdr.ReadToEnd());

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

Источник: http://www.nookery.ru/time-server/

Дата и Время

Для работы с датой и временем в JavaScript используются объекты Date.

Создание

Для создания нового объекта типа Date используется один из синтаксисов:

new Date()

Создает объект Date с текущей датой и временем:

var now = new Date();
alert( now );
new Date(milliseconds)

Создает объект Date, значение которого равно количеству миллисекунд (1/1000 секунды), прошедших с 1 января 1970 года GMT+0.

// 24 часа после 01.01.1970 GMT+0
var Jan02_1970 = new Date(3600 * 24 * 1000);
alert( Jan02_1970 );
new Date(datestring)

Если единственный аргумент – строка, используется вызов Date.parse (см. далее) для чтения даты из неё.

new Date(year, month, date, hours, minutes, seconds, ms)

Дату можно создать, используя компоненты в местной временной зоне. Для этого формата обязательны только первые два аргумента. Отсутствующие параметры, начиная с hours считаются равными нулю, а date – единице.

Заметим:

  • Год year должен быть из 4 цифр.
  • Отсчет месяцев month начинается с нуля 0.
    Например:
    new Date(2011, 0, 1, 0, 0, 0, 0); // // 1 января 2011, 00:00:00
    new Date(2011, 0, 1); // то же самое, часы/секунды по умолчанию равны 0 Дата задана с точностью до миллисекунд:
    var date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567

Получение компонентов даты

Для доступа к компонентам даты-времени объекта Date используются следующие методы:

getFullYear()
Получить год (из 4 цифр)
getMonth()
Получить месяц, от 0 до 11.
getDate()
Получить число месяца, от 1 до 31.
getHours(), getMinutes(), getSeconds(), getMilliseconds()
Получить соответствующие компоненты.

Некоторые браузеры реализуют нестандартный метод getYear(). Где-то он возвращает только две цифры из года, где-то четыре. Так или иначе, этот метод отсутствует в стандарте JavaScript. Не используйте его. Для получения года есть getFullYear().

Дополнительно можно получить день недели:

getDay()
Получить номер дня в неделе. Неделя в JavaScript начинается с воскресенья, так что результат будет числом от 0(воскресенье) до 6(суббота).

Все методы, указанные выше, возвращают результат для местной временной зоны.

Существуют также UTC-варианты этих методов, возвращающие день, месяц, год и т.п. для зоны GMT+0 (UTC): getUTCFullYear(), getUTCMonth(), getUTCDay(). То есть, сразу после «get» вставляется «UTC».

Если ваше локальное время сдвинуто относительно UTC, то следующий код покажет разные часы:

// текущая дата
var date = new Date();

// час в текущей временной зоне
alert( date.getHours() );

// сколько сейчас времени в Лондоне?
// час в зоне GMT+0
alert( date.getUTCHours() );

Кроме описанных выше, существуют два специальных метода без UTC-варианта:

getTime()

Возвращает число миллисекунд, прошедших с 1 января 1970 года GMT+0, то есть того же вида, который используется в конструкторе new Date(milliseconds).

getTimezoneOffset()

Возвращает разницу между местным и UTC-временем, в минутах.

alert( new Date().getTimezoneOffset() ); // Для GMT-1 выведет 60

Установка компонентов даты

Следующие методы позволяют устанавливать компоненты даты и времени:

  • setFullYear(year [, month, date])
  • setMonth(month [, date])
  • setDate(date)
  • setHours(hour [, min, sec, ms])
  • setMinutes(min [, sec, ms])
  • setSeconds(sec [, ms])
  • setMilliseconds(ms)
  • setTime(milliseconds) (устанавливает всю дату по миллисекундам с 01.01.1970 UTC)

Все они, кроме setTime(), обладают также UTC-вариантом, например: setUTCHours().

Как видно, некоторые методы могут устанавливать несколько компонентов даты одновременно, в частности, setHours. При этом если какая-то компонента не указана, она не меняется. Например:

var today = new Date;

today.setHours(0);
alert( today ); // сегодня, но час изменён на 0

today.setHours(0, 0, 0, 0);
alert( today ); // сегодня, ровно 00:00:00.

Автоисправление даты

Автоисправление – очень удобное свойство объектов Date. Оно заключается в том, что можно устанавливать заведомо некорректные компоненты (например 32 января), а объект сам себя поправит.

var d = new Date(2013, 0, 32); // 32 января 2013 ?!?
alert(d); // … это 1 февраля 2013!

Неправильные компоненты даты автоматически распределяются по остальным.

Например, нужно увеличить на 2 дня дату «28 февраля 2011». Может быть так, что это будет 2 марта, а может быть и 1 марта, если год високосный. Но нам обо всем этом думать не нужно. Просто прибавляем два дня. Остальное сделает Date:

var d = new Date(2011, 1, 28);
d.setDate(d.getDate() + 2);

alert( d ); // 2 марта, 2011

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

var d = new Date();
d.setSeconds(d.getSeconds() + 70);

alert( d ); // выведет корректную дату

Можно установить и нулевые, и даже отрицательные компоненты. Например:

var d = new Date;

d.setDate(1); // поставить первое число месяца
alert( d );

d.setDate(0); // нулевого числа нет, будет последнее число предыдущего месяца
alert( d ); var d = new Date;

d.setDate(-1); // предпоследнее число предыдущего месяца
alert( d );

Преобразование к числу, разность дат

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

alert(+new Date) // +date то же самое, что: +date.valueOf()

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

Это используют для измерения времени:

var start = new Date; // засекли время

// что-то сделать
for (var i = 0; i < 100000; i++) { var doSomething = i * i * i; } var end = new Date; // конец измерения alert( "Цикл занял " + (end - start) + " ms" );

Бенчмаркинг

  • Допустим, у нас есть несколько вариантов решения задачи, каждый описан функцией.
  • Как узнать, какой быстрее?
  • Для примера возьмем две функции, которые бегают по массиву:

function walkIn(arr) {
for (var key in arr) arr[key]++
}

function walkLength(arr) {
for (var i = 0; i < arr.

length; i++) arr[i]++;
}

Чтобы померить, какая из них быстрее, нельзя запустить один раз walkIn, один раз walkLength и замерить разницу. Одноразовый запуск ненадежен, любая мини-помеха исказит результат.

Для правильного бенчмаркинга функция запускается много раз, чтобы сам тест занял существенное время. Это сведет влияние помех к минимуму. Сложную функцию можно запускать 100 раз, простую – 1000 раз…

Померяем, какая из функций быстрее:

var arr = [];
for (var i = 0; i < 1000; i++) arr[i] = 0; function walkIn(arr) { for (var key in arr) arr[key]++; } function walkLength(arr) { for (var i = 0; i < arr.length; i++) arr[i]++; } function bench(f) { var date = new Date(); for (var i = 0; i < 10000; i++) f(arr); return new Date() - date; } alert( 'Время walkIn: ' + bench(walkIn) + 'мс' ); alert( 'Время walkLength: ' + bench(walkLength) + 'мс' );

Теперь представим себе, что во время первого бенчмаркинга bench(walkIn) компьютер что-то делал параллельно важное (вдруг) и это занимало ресурсы, а во время второго – перестал. Реальная ситуация? Конечно реальна, особенно на современных ОС, где много процессов одновременно.

Гораздо более надёжные результаты можно получить, если весь пакет тестов прогнать много раз.

var arr = [];
for (var i = 0; i < 1000; i++) arr[i] = 0; function walkIn(arr) { for (var key in arr) arr[key]++; } function walkLength(arr) { for (var i = 0; i < arr.length; i++) arr[i]++; } function bench(f) { var date = new Date(); for (var i = 0; i < 1000; i++) f(arr); return new Date() - date; } // bench для каждого теста запустим много раз, чередуя var timeIn = 0, timeLength = 0; for (var i = 0; i < 100; i++) { timeIn += bench(walkIn); timeLength += bench(walkLength); } alert( 'Время walkIn: ' + timeIn + 'мс' ); alert( 'Время walkLength: ' + timeLength + 'мс' );

В современных браузерах (кроме IE9-) вызов performance.now() возвращает количество миллисекунд, прошедшее с начала загрузки страницы. Причём именно с самого начала, до того, как загрузился HTML-файл, если точнее – с момента выгрузки предыдущей страницы из памяти.

Так что это время включает в себя всё, включая начальное обращение к серверу.

Его можно посмотреть в любом месте страницы, даже в , чтобы узнать, сколько времени потребовалось браузеру, чтобы до него добраться, включая загрузку HTML.

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

Для измерения с одновременным выводом результатов в консоли есть методы:

  • console.time(метка) – включить внутренний хронометр браузера с меткой.
  • console.timeEnd(метка) – выключить внутренний хронометр браузера с меткой и вывести результат.

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

В коде ниже таймеры walkIn, walkLength – конкретные тесты, а таймер «All Benchmarks» – время «на всё про всё»:

var arr = [];
for (var i = 0; i < 1000; i++) arr[i] = 0; function walkIn(arr) { for (var key in arr) arr[key]++; } function walkLength(arr) { for (var i = 0; i < arr.length; i++) arr[i]++; } function bench(f) { for (var i = 0; i < 10000; i++) f(arr); } console.time("All Benchmarks"); console.time("walkIn"); bench(walkIn); console.timeEnd("walkIn");

Читайте также:  Как узнать федеральный номер
console.time("walkLength"); bench(walkLength); console.timeEnd("walkLength"); console.timeEnd("All Benchmarks");

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

Современные интерпретаторы JavaScript делают массу оптимизаций, например:

  1. Автоматически выносят инвариант, то есть постоянное в цикле значение типа arr.length, за пределы цикла.
  2. Стараются понять, значения какого типа хранит данная переменная или массив, какую структуру имеет объект и, исходя из этого, оптимизировать внутренние алгоритмы.
  3. Выполняют простейшие операции, например сложение явно заданных чисел и строк, на этапе компиляции.
  4. Могут обнаружить, что некий код, например присваивание к неиспользуемой локальной переменной, ни на что не влияет и вообще исключить его из выполнения, хотя делают это редко.

Эти оптимизации могут влиять на результаты тестов, поэтому измерять скорость базовых операций JavaScript («проводить микробенчмаркинг») до того, как вы изучите внутренности JavaScript-интерпретаторов и поймёте, что они реально делают на таком коде, не рекомендуется.

Форматирование и вывод дат

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

Это делается вызовом date.toLocaleString(локаль, опции), в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести, и ряд настроек вывода, после чего интерпретатор сам сформирует строку.

Пример с почти всеми параметрами даты и русским, затем английским (США) форматированием:

var date = new Date(2014, 11, 31, 12, 30, 0);

var options = {
era: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
timezone: 'UTC',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
};

alert( date.toLocaleString(«ru», options) ); // среда, 31 декабря 2014 г. н.э. 12:30:00
alert( date.toLocaleString(«en-US», options) ); // Wednesday, December 31, 2014 Anno Domini 12:30:00 PM

Вы сможете подробно узнать о них в статье Intl: интернационализация в JavaScript, которая посвящена этому стандарту.

Методы вывода без локализации:

toString(), toDateString(), toTimeString()
Возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему – читаемость человеком. Метод toString возвращает дату целиком, toDateString() и toTimeString() – только дату и время соответственно.

var d = new Date();

alert( d.toString() ); // вывод, похожий на 'Wed Jan 26 2011 16:40:50 GMT+0300'

toUTCString()
То же самое, что toString(), но дата в зоне UTC.

toISOString()
Возвращает дату в формате ISO Детали формата будут далее. Поддерживается современными браузерами, не поддерживается IE8-.

var d = new Date();

alert( d.toISOString() ); // вывод, похожий на '2011-01-26T13:51:50.417Z'

Если хочется иметь большую гибкость и кросс-браузерность, то также можно воспользоваться специальной библиотекой, например Moment.JS или написать свою функцию форматирования.

Разбор строки, Date.parse

Все современные браузеры, включая IE9+, понимают даты в упрощённом формате ISO 8601 Extended.

Этот формат выглядит так: YYYY-MM-DDTHH:mm:ss.sssZ, где:

  • YYYY-MM-DD – дата в формате год-месяц-день.
  • Обычный символ T используется как разделитель.
  • HH:mm:ss.sss – время: часы-минуты-секунды-миллисекунды.
  • Часть 'Z' обозначает временную зону – в формате +-hh:mm, либо символ Z, обозначающий UTC. По стандарту её можно не указывать, тогда UTC, но в Safari с этим ошибка, так что лучше указывать всегда.

Также возможны укороченные варианты, например YYYY-MM-DD или YYYY-MM или даже только YYYY.

Метод Date.parse(str) разбирает строку str в таком формате и возвращает соответствующее ей количество миллисекунд. Если это невозможно, Date.parse возвращает NaN.

Например:

var msUTC = Date.parse('2012-01-26T13:51:50.417Z'); // зона UTC

alert( msUTC ); // 1327571510417 (число миллисекунд)

С таймзоной -07:00 GMT:

var ms = Date.parse('2012-01-26T13:51:50.417-07:00');

alert( ms ); // 1327611110417 (число миллисекунд)

До появления спецификации ECMAScript 5 формат не был стандартизован, и браузеры, включая IE8-, имели свои собственные форматы дат. Частично, эти форматы пересекаются.

Например, код ниже работает везде, включая старые IE:

var ms = Date.parse(«January 26, 2011 13:51:50»);

alert( ms );

Вы также можете почитать о старых форматах IE в документации к методу MSDN Date.parse.

Конечно же, сейчас лучше использовать современный формат. Если же нужна поддержка IE8-, то метод Date.parse, как и ряд других современных методов, добавляется библиотекой es5-shim.

Метод Date.now()

Метод Date.now() возвращает дату сразу в виде миллисекунд.

Технически, он аналогичен вызову +new Date(), но в отличие от него не создаёт промежуточный объект даты, а поэтому – во много раз быстрее.

Его использование особенно рекомендуется там, где производительность при работе с датами критична. Обычно это не на веб-страницах, а, к примеру, в разработке игр на JavaScript.

Итого

  • Дата и время представлены в JavaScript одним объектом: Date. Создать «только время» при этом нельзя, оно должно быть с датой. Список методов Date вы можете найти в справочнике Date или выше.
  • Отсчёт месяцев начинается с нуля.
  • Отсчёт дней недели (для getDay()) тоже начинается с нуля (и это воскресенье).
  • Объект Date удобен тем, что автокорректируется. Благодаря этому легко сдвигать даты.
  • При преобразовании к числу объект Date даёт количество миллисекунд, прошедших с 1 января 1970 UTC. Побочное следствие – даты можно вычитать, результатом будет разница в миллисекундах.
  • Для получения текущей даты в миллисекундах лучше использовать Date.now(), чтобы не создавать лишний объект Date (кроме IE8-)
  • Для бенчмаркинга лучше использовать performance.now() (кроме IE9-), он в 1000 раз точнее.

Источник: https://learn.javascript.ru/datetime

Функция date() — вывод даты и времени в PHP

CodeNet / Языки программирования / PHP / Дата и время

В PHP3 и PHP4 существует много разных встроенных функций, которые не надо писать самому, среди них есть и date() — функция вывода даты и времени, о которой будет описано вмести с примерами ниже.

Если Вы когда-то сталкивались с проблемой вывода местного (установленное на сервере) времени и даты, то не надо прибегать к помощи JavaScript, который может быть отключён у конкретного пользователя, просто воспользуйтесь функцией date(). Использовать date() очень просто и удобно, из-за всевозможных параметров вывода. И пользователь получит в итоге простую HTML страницу, т.к. все операции по определению даты и времени будут происходить на сервере.

  • Функция даты и времени возвращает строку и принимает аргументы format (строка) и time stamp (целое число) — необязательный аргумент: string date (string format [, int timestamp]);
  • Возвращает отформатированную строку теста и цифр согласно параметрам, указанным в аргументе format. Аргумент timestamp
  • В таблице 1.1 представлены параметры аргумента format(при вводе параметров необходимо соблюдать регистр):
Параметр Описание Возвращает
a нижний регистр, выводит pm или am, в зависимости от времени. «am» или «pm»
A верхний регистр, выводит PM или AM, в зависимости от времени. «AM» или «PM»
d текущий день, 2 цифры с первым ноль. от «01» до «31»
F месяц, полное название тестом «January»
g часы, 12-часовой формат, без первого нуля. «1» до «12»
G часы, 24-часовой формат, без первого нуля. «0» до «24»
h часы, 12-часовой формат, первый ноль. «01» до «12»
H часы, 24-часовой формат, первый ноль. «00» до «24»
i минуты «00» до «59»
I(заглавная i) 1, если день, 0 если ночь «1» или «0»
j текущий день, 2 цифры без первого нуля. от «1» до «31»
l(маленькая L) день недели, полное название текстом «Friday»
L 1 — високосный год, 0 в остальных случаях «1» или «0»
m месяц, первый ноль. «01» до «12»
M месяц, 3 первые буквы названия. «Jan»
n месяц без первого нуля. «1» до «12»
r формат вывода даты и времени RFC 822 «Thu, 21 Dec 2000 16:01:07 +0200»
s секунды. «00» до «59»
S Английское окончание в зависимости от даты. «th» или «nd»
t количество дней в текущем месяце. «28» до «31»
T Часовой пояс установленный на машине. «MDT»
U количество секунд с начало века. «999610283»
w день недели, числовой «0»(Воскресенье) до «6»(Суббота)
Y год, 4 цифры «2001»
y год, 2 цифры «99»
z день в году «0» до «365»
Z часовой пояс от Гринвича в секундах, для запада отрицательная, для востока положительная. «-43200» до «43200»

Символы, буквы и цифры не указанные в таблице 1.1 будут выведены, как есть.

echo (date(«d = F = Y «)); //Выведет 04 = September = 2001
echo (date(«l dS of F Y h:I:s A»));
//Выведет Tuesday 04th of September 2001 05:1:28 PM
//Обратите внимание на ds = 04th , d -день и s — окончание

Функцию можно также присвоить переменной или элементу массива.

Источник: http://www.codenet.ru/webmast/php/date.php

Работа с датой и временем в PHP

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

PHP содержит множество функций для работы с датой и временем.
Наиболее употребимыми являются:

  • time( ) — возвращает текущее абсолютное время. Это число равно
    количеству секунд, которое прошло с полуночи 1 января 1970 года
    (с начала эпохи UNIX).
  • getdate( ) — считывает информацию о дате и времени. Возвращает
    ассоциативный массив, содержащий информацию по заданному или по текущему
    (по умолчанию) времени. Массив содержит следующие элементы:

    seconds Секунды (0-59)
    minutes Минуты (0-59)
    hours Часы (0-23)
    mday День месяца (1-31)
    wday День недели (0-6), начиная с воскресенья
    mon Месяц (1-12)
    year Год
    yday День года (0-365)
    weekday Название дня недели (например, Friday)
    month Название месяца (например, January)
    Абсолютное время

    Пример 1

    РЕЗУЛЬТАТ ПРИМЕРА 1:
    seconds = 21
    minutes = 4
    hours = 12
    mday = 10
    wday = 4
    mon = 11
    year = 2005
    yday = 313
    weekday = Thursday
    month = November
    0 = 1131613461 Сегодня: 10.11.2005

  • date( ) — форматирование даты и времени. Аргументы: строка формата
    и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной
    или текущей датой в указанном формате.
    Строка формата может содержать следующие коды:

    a Включено обозначение «am» или «pm»
    A Включено обозначение «AM» или «PM»
    d День месяца (01-31)
    D Сокращенное название дня недели (три буквы)
    F Полное название месяца
    g Часы (12-часовой формат без ведущих нулей)
    G Часы (24-часовой формат без ведущих нулей)
    h Часы (12-часовой формат)
    H Часы (24-часовой формат)
    i Минуты (00-59)
    j День месяца без ведущих нулей (1-31)
    l Полное название дня недели
    L Признак високосного года (0 или 1)
    m Месяц (01-12)
    M Сокращенное название месяца (три буквы)
    n Месяц (1-12)
    s Секунды (00-59)
    t Количество дней в данном месяце (от 28 до 31)
    U Абсолютное время
    w Номер дня недели (0 — воскресенье, 6 — суббота)
    y Год (два разряда)
    Y Год (четыре разряда)
    z День года (0-365)
    Z Смещение часового пояса в секундах (от -43200 до 43200)

    Любая другая информация, включенная в строку формата, будет вставлена в
    возвращаемую строку. Если в строку формата нужно добавить символы, которые
    сами по себе являются кодами формата, то перед ними надо поставить
    обратную косую черту «». Символы, которые становятся кодами формата при
    добавлении к ним обратной косой, нужно предварять двумя косыми. Например,
    если необходимо добавить в строку «n», то надо ввести «\n», поскольку
    »
    » является символом новой строки.

    Пример 2

    РЕЗУЛЬТАТ ПРИМЕРА 2:
    Сегодня: 10.11.05 13:03

  • mktime( ) — возвращает абсолютное время, которое затем можно
    использовать с функциями date() или getdate(). Принимает до
    шести целочисленных аргументов в следующем порядке:
    часы
    минуты
    секунды
    месяц
    день месяца
    год

    РЕЗУЛЬТАТ ПРИМЕРА 3:
    22 of January 1971, at 1.30 pm, Friday

  • checkdate( ) — проверка правильности даты.
    Аргументы: месяц, день, год. Возвращает true, если дата правильная,
    т.е. месяц — целое число от 1 до 12;
    день — целое число, не превышающее общего количества дней в данном месяце.
    При этом високосные годы обрабатываются корректно;
    год — целое число от 1 до 32767.
    Например:
    if ( !checkdate( $month, 1, $year ) )
    {
    $d = getdate();
    $month = $d[mon];
    $year = $d[year];
    }

    Внимание! Дата может находиться в допустимом диапазоне, но остальные
    функции работы с датами не примут это значение.
    Так, нельзя использовать mktime() для годов до 1902, а также
    следует использовать ее осторожно для годов до 1970.

  • strftime( ) — формирование локальной даты и времени.
    Аргументы: строка формата и абсолютное время. Второй аргумент необязателен.
    Возвращает строку с заданной или текущей датой в указанном формате.
    При этом названия месяцев и дней недели извлекается из локали,
    выбранной с помощью функции setlocate( )
    Строка формата может содержать следующие коды:

    %a Сокращенное название дня недели
    %A Полное название дня недели
    %b Сокращенное название месяца
    %B Полное название месяца
    %c Предпочтительный формат даты и времени
    %C Номер века
    %d День месяца (1-31)
    %D То же, что и %m/%d/%y
    %e Месяц (1-12)
    %h То же, что и %b
    %H Часы (24-часовой формат)
    %I Часы (12-часовой формат)
    %j День года (0-365)
    %m Месяц (1-12)
    %M Минуты
    %n Символ новой строки
    %p Включено обозначение «am» или «pm»
    %r Время с использованием a.m./p.m.-нотации
    %R Время в 24-часовом формате
    %S Секунды (00-59)
    %t Символ табуляции
    %T То же, что и %H:%M:%S
    %u Номер дня недели (1 — понедельник, 7 — воскресенье)
    %U Номер недели. Отсчет начинается с первого воскресенья года
    %V Номер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем
    %W Номер недели. Отсчет начинается с первого понедельника года
    %w Номер дня недели (0 — воскресенье, 6 — суббота)
    %x Предпочтительный формат даты без времени
    %X Предпочтительный формат времени без даты
    %y Год (два разряда)
    %Y Год (четыре разряда)
    %Z Часовой пояс (имя или сокращение)
    %% Символ «%»

    Любая другая информация, включенная в строку формата, будет вставлена в
    возвращаемую строку.

    Пример 4

    РЕЗУЛЬТАТ ПРИМЕРА 4:
    Tuesday 15 November 2005 13:11
    Сегодня вторник 15 Ноябрь 2005 13:11:14
    Московское время (зима)

Еще примеры:

date(«l dS of F Y h:i:s A») :

Monday 29th 2019f July 2019 02:51:31 PM

date(«Сегодня d.m.Y») :

Сегодня 29.07.2019

Источник: https://htmlweb.ru/php/php_date.php

Веб-дизайн и поисковая оптимизация

Дата на сайте

Cоздание скрипта даты и вставка его на HTML-страницу

В предыдущих статьях было рассмотрено создание формы обратной связи и проверка её заполнения посетителем сайта. Еще одна полезная для сайтов вещь — вставка текущей даты.

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

Между тем, используя стандартные средства JavaScript, вставить дату на страницу сайта можно очень просто.

Вот весь скрипт даты:

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

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

Описанный способ удобен, например, для автоматического ежегодного изменения строки Copyright © 2008 — на сайте, если, конечно, такая строчка там присутствует.

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

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

Объект Date возвращает, то есть считывает с компьютера, информацию о текущей дате.

Хотя значения даты возвращаются в стандартной форме, фактическое значение хранится как количество миллисекунд, прошедших после полуночи 1 января 1970 года. Применение этого соглашения запрещает использование дат до 1970 года.

(Всегда удивляюсь, как изощрённо программисты умудряются запудрить мозги нормальному человеку. Вспомните страшилки, которыми нас пугали при переходе к новому 2000 году!)

Итак, начинаем с присвоения значения даты переменной d, затем создаём массивы (Array) для дней недели (day) и месяцев (month), указывая их в необходимой грамматической форме: падеж, число, заглавная буква, если слово стоит в начале даты и т.п.

Последняя строчка скрипта — собственно печать даты (document.write). Здесь вы устанавливаете, что и в какой последовательности будете выводить в строке текущей даты. Компоненты отделяются друг от друга знаком +.

Для ввода пробела используется конструкция » «, а для ввода буквы г (год) — конструкция »  г.»

Как видно из скрипта, получение данных о текущем времени выполняет элемент get. Этот метод позволяет получить следующую информацию:

  • getDate() — возвращает число от 1 до 31, представляющее число месяца;
  • getDay() — возвращает день недели как целое число от 0 (воскресенье) до 6 (суббота);
  • getMonth() — возвращает номер месяца в году;
  • getFullYear() — возвращает год. Если использовать просто getYear(), то будет выводиться текущий год минус 1900;
  • get Hours() — возвращает час суток;
  • getMinutes() — возвращает минуты как число от 0 до 59;
  • getSeconds() — возвращает число секунд от 0 до 59.

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

Назовём её TODAY и определим в ней форму вывода даты аналогично вышеизложенному.

Скрипт будет выглядеть следующим образом:

  • Для вывода даты вызываем скрипт в нужном месте HTML-кода страницы, используя следующую команду:
  • Если ваш сайт содержит много страниц, на которых надо показывать дату, то удобнее выделить Java-скрипт вывода даты в отдельный файл, например, data.js. Практически, это страница, состоящая из первого из описанных скриптов, то есть со строкой document.write (см. выше). Располагать её надо в том же каталоге, что и основная страница, и вызывать в месте вывода даты следующим образом: .

    Не забудьте проверить, чтобы файл data.js имел ту же кодировку, что и основной документ, иначе дата будет выводиться замечательными крючками, квадратиками и прочими финтифлюшками. Если вы используете программу Adobe Dreamweaver, то для этого надо выбрать раздел Редактировать — Установки…

    — Создать документ — Java Script — Кодировка по умолчанию. Также сменить кодировку скрипта можно в Microsoft Word. Для этого откройте документ, задайте нужную кодировку, если он выводится неверно (как это сделать, смотрите в «Справке Word»), а затем сохраните его следующим путем: Файл — Сохранить как — Обычный текст — Сохранить.

    В открывшемся окне вы можете задать необходимую кодировку.

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

    Если вам необходимо показать точное время, то необходимо использовать РНР-скрипт, который будет показывать время на сервере.

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

    И последнее — для особо ленивых.

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

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

    4.01.2010 г.

    Источник: http://www.seomark.ru/data.html

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