Конвертер Обычного формата Времени в UNIX Время
Считаете ли вы этот инструмент полезным? То поделитесь этим с друзьями или коллегами. Это поможет нам сделать наши бесплатные веб-инструменты лучше.
Эта форма позволяет вам конвертировать дату и время в UNIX время:
Результат преобразования даты и времени в UNIX время
Unix время
Копировать
О конвертировании даты в метку времени Unix
Что такое Unix метка времени?
Отметка времени UNIX — это способ отслеживать время как общее количество секунд. Этот отсчет начинается в эпоху Unix 1 января 1970 года в UTC. Следовательно, метка времени Unix — это просто количество секунд между конкретной датой и эпохой Unix. Следует также отметить, что этот момент времени технически не меняется независимо от того, где вы находитесь на земном шаре. Это очень полезно для компьютерных систем для отслеживания и сортировки устаревшей информации в динамических и распределенных приложениях как онлайн, так и на стороне клиента.
Об этом инструменте
Большинство баз данных хранят дату в формате Unix, поэтому был создан инструмент Конвертировать дату в Unix время, чтобы помочь с конвентированием времени.
Как это работает?
Просто выберите Дату и время для ввода выше и нажмите кнопку «Конвертировать» , и вы получите Время Unix.
Пожертвовать
Вам понравился этот инструмент? Вы можете задонатить нам. Это поможет нам улучшить наши бесплатные веб-инструменты.
Десериализация даты в виде строки в формате unix timestamp на C++
Имеется некая таблица MS Excel(в формате CSV), которая содержит n-ое количество строк, содержащих некоторые данные, разделенные «;». Один из видов данных — время в формате unix timestamp. Какой есть эффективный способ считывания и преобразования данных из файла, дальнейшей записи в структуру на С++?
Отслеживать
5,127 1 1 золотой знак 14 14 серебряных знаков 31 31 бронзовый знак
задан 7 авг 2019 в 8:49
373 1 1 серебряный знак 12 12 бронзовых знаков
Пример данных в студию.
7 авг 2019 в 9:01
@Fat-Zer, одна из строк таблицы(1;Ivan;777;1850040995;1) : 1 число в скобках — id, 2 — имя, 3 — просто рандомное число, 4 — та самая дата, которую нужно считать, 5 — булевское число. Такую строку надо считать из таблицы в структуры по полям(в структуре есть поле id, имя и т.д.).
7 авг 2019 в 9:05
определённости ради добавь определение структуры и пример данных к вопросу. если кратко, то время можно банально читать в time_t , хотя строго говоря это не гарантируется, данный тип почти всегда отсчитывает время от unix-эпохи. собственно в таком случае просто используй scanf или для плюсовых потоков operator>> .
7 авг 2019 в 9:32
7 авг 2019 в 9:54
На будущее: добавляй код/всё что необходимо для ответа на вопрос прямо в его текст — под ним есть серая кнопочка править .
7 авг 2019 в 10:22
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
1;Ivan;777;1850040995;1
Чтение будет выглядеть примерно следующим образом:
struct Record < uint64_t id; string partner; time_t number; // поле для даты bool status; >; //. std::ifstream fin; struct Record rec; char dummy; fin >> rec.id >> std::ws >> dummy; if (dummy!=';') < fin.setstate(std::ios_base::failbit); >std::getline (fin, rec.partner, ';'); fin.ignore (std::numeric_limits::digits10, ';'); fin >> rec.number >> std::ws >> dummy; if (dummy!=';') < fin.setstate(std::ios_base::failbit); >fin >> rec.status; if (fin.fail())
Для даты стоит использовать тип предназначенный для этого — time_t . Это арифметический целочисленный тип; строго говоря, не гарантируется, что этот он представляет собой именно unix-timestamp, но по факту это почти на всех системах так. Отдельно, не стоит использовать 32-х битные типы для хранения подобных.
Парсинг с помощью плюсовых потоков — всё же реализован относительно криво, для относительно элегантного варианта ожидания/верификации конкретных символов в потоке можно воспользоваться ответом отсюда.
Отслеживать
ответ дан 7 авг 2019 в 10:20
23.1k 1 1 золотой знак 19 19 серебряных знаков 37 37 бронзовых знаков
7 авг 2019 в 10:25
@yrHeTaTeJlb, не поможете с исправлением? пока не могу сориентироваться в плане чтения даты. coliru.stacked-crooked.com/a/fbc79b22e05b046d
7 авг 2019 в 10:59
@Koka_LV, просто попробуйте мой ответ, там все работает
7 авг 2019 в 11:09
@Koka_LV, да, глупость написал. забыл, что оно так не работает. сейчас поправлю.
7 авг 2019 в 11:09
@yrHeTaTeJlb, просто в вашем примере вы явно заполняете data.txt. А у меня имеется таблица формата .csv, где есть несколько полей.
7 авг 2019 в 11:27
Допустим у вас есть следующая структура
struct Line< using Clock = std::chrono::system_clock; using TimePoint = Clock::time_point; int std::string name; int number = 0; TimePoint time; bool flag = false; >;
Есть разные способы заполнить ее значениями из файла, но я предпочитаю перегрузку operator>> и за компанию operator>> .
struct Line< //.. friend std::istream& operator>>(std::istream &in, Line &line) < in >> line.id; in.ignore(std::numeric_limits::max(), ';'); std::getline(in, line.name, ';'); in >> line.number; in.ignore(std::numeric_limits::max(), ';'); std::time_t time = 0; in >> time; line.time = Line::Clock::from_time_t(time); in.ignore(std::numeric_limits::max(), ';'); in >> line.flag; return in; > friend std::ostream& operator <<(std::ostream &out, const Line &line) < out << line.id << ';' << line.name << ';' << line.number << ';' << Line::Clock::to_time_t(line.time) << ';' << line.flag << ';'; return out; >>;
in.ignore(std::numeric_limits::max(), ‘;’); нужен для того, чтобы пропустить непрочитанные символы до ; включительно. timestamp чиатется в std::time_t , и конвертируется в std::chrono::system_clock::time_point (если вдруг класс system_clock не нравится, можете выбрать другой).
int main() < < //Заполняем файл данными для теста std::ofstream data; data //Читаем только что созданный файл std::ifstream data; std::vector lines(std::istream_iterator(data), <>); //Выводим на экран std::copy(lines.begin(), lines.end(), std::ostream_iterator(std::cout, "\n")); >
Отслеживать
ответ дан 7 авг 2019 в 10:24
yrHeTateJlb yrHeTateJlb
8,052 15 15 серебряных знаков 35 35 бронзовых знаков
Еще один вариант чтения подобных форматов, это использовать сишную (С++ ее тоже приемлет) функцию fscanf.
Для чтения вашей структуры:
struct recd < uint64_t id; string name; int number; time_t ts; bool b; >;
с учетом замечания в комментариях, что данные во всех строках заключены в кавычки ( » ), получаем вот такую функцию:
#include #include #include #include #include using namespace std; #define NAME_LEN 4096 int get_csv_record (struct recd *p, FILE *f) < char name[NAME_LEN]; int b, r = fscanf(f, "\" %" SCNu64 " ;%[^;]; %d ; %" SCNiFAST32 " ; %d \"\n", &p->id, name, &p->number, &p->ts, &b); if (r > 0) < p->b = (b != 0); p->name = name; > return r; >
Форматы ввода uin64_t — SCNu64 и time_t — SCNiFAST32 (32 разряда в 32-бит и 64 в 64-бит системах) определены в . Это макросы, значения которых зависят от разрядности системы.
На мой взгляд все получилось весьма компактно. Еще бы, ведь scanf() для подобных вещей и задумывалась. Если бы структура содержала только базовые типы, все вообще свелось бы к одной строке с return fscanf(. ); -)
Для теста делаем программку:
#include #include using namespace std; struct recd < uint64_t id; string name; int number; time_t ts; bool b; >; int get_csv_record (struct recd *p, FILE *f); int main ()
и вот такой файл (даже с пустыми строками):
avp@avp-xubu2:~/hashcode$ cat t " 221 ;hshhs sj;1;1234567899876;17" "222;ww "hs'hhs" . sj;2; 12345;1" "223;wwh sh hs sj;3; 987456; 1 " " 224 ;ww hshhs sj; 4; 78654 ; 0" avp@avp-xubu2:~/hashcode$
Транслируем и печатаем:
avp@avp-xubu2:~/hashcode$ g++ tt2.cpp tt3.cpp && ./a.out
Как конвертировать unix время в excel
Argument 'Topic id' is null or empty
Сейчас на форуме
© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru
Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.
| ООО "Планета Эксел" ИНН 7735603520 ОГРН 1147746834949 |
ИП Павлов Николай Владимирович ИНН 633015842586 ОГРНИП 310633031600071 |
Unix time конвертер (Конвертер времени Unix онлайн)
UNIX-время или POSIX-время (англ. Unix time) - способ кодирования времени, принятый в UNIX и других POSIX-совместимых операционных системах.
Моментом начала отсчёта считается полночь (по UTC) с 31 декабря 1969 года на 1 января 1970, время с этого момента называют "эрой UNIX" (англ. Unix Epoch).
Время UNIX согласуется с UTC, в частности, при объявлении високосных секунд UTC соответствующие номера секунд повторяются.
Способ хранения времени в виде количества секунд очень удобно использовать при сравнении дат (с точностью до секунды), а также для хранения дат: при необходимости их можно преобразовать в любой удобочитаемый формат. Дата и время в этом формате также занимают очень мало места (4 или 8 байтов, в зависимости от размера машинного слова), поэтому его разумно использовать для хранения больших объёмов дат. Недостатки в производительности могут проявиться при очень частом обращении к элементам даты, вроде номера месяца и т. п. Но в большинстве случаев эффективнее хранить время в виде одной величины, а не набора полей.
| Обычная дата(Human readable time) | Секунды |
| 1 минута | 60 секунд |
| 1 час | 3600 секунд |
| 1 день | 86400 секунд |
| 1 неделя | 604800 секунд |
| 1 месяц (30.44 дней) | 2629743 секунд |
| 1 год (365.24 дней) | 31556926 секунд |
Текущее Unix epoch время:
Конвертивание эпохи Unix в человекопонятную дату(human readable date)
Unix дата начала и конца года, месяца или дня
Перевод секунд в дни, часы и минуты
Как получить Unix время в.
| Perl | time |
| PHP | time() |
| Ruby | Time.now (или Time.new ). Чтобы вывести: Time.now.to_i |
| Python | import time сначала, потом time.time() |
| Java | long epoch = System.currentTimeMillis()/1000; |
| Microsoft .NET C# | epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; |
| VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", Now()) |
| Erlang | calendar:datetime_to_gregorian_seconds(calendar:now_to_universal_time( now()))-719528*24*3600. |
| MySQL | SELECT unix_timestamp(now()) |
| PostgreSQL | SELECT extract(epoch FROM now()); |
| SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE()) |
| JavaScript | Math.round(new Date().getTime()/1000.0) getTime() возвращает время в миллисекундах. |
| Unix/Linux | date +%s |
| Другие OS | Командная строка: perl -e "print time" (Если Perl установлен на вашей системе) |
Конвертирование даты в Unix время в.
| PHP | mktime(часы, минуты, секунды, месяц, день, год) |
| Ruby | Time.local(год, месяц, день, часы, минуты, секунды, usec ) (или Time.gm для GMT/UTC вывода). Чтобы вывести добавьте .to_i |
| Python | import time сначала, потом int(time.mktime(time.strptime('2000-01-01 12:34:00', '%Y-%m-%d %H:%M:%S'))) |
| Java | long epoch = new java.text.SimpleDateFormat ("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00"); |
| VBScript/ASP | DateDiff("s", "01/01/1970 00:00:00", поле даты) |
| MySQL | SELECT unix_timestamp(время) Формат времени: YYYY-MM-DD HH:MM:SS или YYMMDD или YYYYMMDD |
| PostgreSQL | SELECT extract(epoch FROM date('2000-01-01 12:34')); С timestamp: SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-08'); C интервалом: SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours'); |
| SQL Server | SELECT DATEDIFF(s, '1970-01-01 00:00:00', поле с датой) |
| Unix/Linux | date +%s -d"Jan 1, 1980 00:00:01" |
Конвертирование Unix времеми в понятную дату(human readable date).
| PHP | date(Формат, unix время); |
| Ruby | Time.at(unix время) |
| Python | import time сначала, потом time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.localtime(unix время)) Замените time.localtime на time.gmtime для GMT даты. |
| Java | String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date (unix время*1000)); |
| VBScript/ASP | DateAdd("s", unix время, "01/01/1970 00:00:00") |
| PostgreSQL | SELECT TIMESTAMP WITH TIME ZONE 'epoch' + unix время * INTERVAL '1 second'; |
| MySQL | from_unixtime(unix время, не обязательно, выходной формат) Стандартный формат выхода YYY-MM-DD HH:MM:SS |
| SQL Server | DATEADD(s, unix время, '1970-01-01 00:00:00') |
| Microsoft Excel | =(A1 / 86400) + 25569 Результат будет в GMT зоне времени. Для других временных зон: =((A1 +/- разница аремени для зоны) / 86400) + 25569. |
| Linux | date -d @1190000000 |
| Другие OS | Командная строка: perl -e "print scalar(localtime(unix время))" (Если установлен Perl) Замените 'localtime' на 'gmtime' для GMT/UTC зоны времени. |
Для чего нужен инструмент "Unixtime конвертер"?
Данный инструмент, в первую очередь, будет полезен веб-мастерам, которые постоянно имеют дело с большими объемами дат или часто в своей работе обращаются к их элементам. С помощью инструмента "Unixtime конвертер" можно легко конвертировать Unix время в понятную для пользователя дату (и наоборот), узнать текущее Unix epoch время, а также получить Unix время в различных языках программирования, СУБД и операционных системах.
Что такое Unix время?
Эра Unix (Unix epoch) началась в ночь с 31 декабря 1969 года на 1 января 1970 года. Именно эту дату взяли за точку отсчета "компьютерного" времени, которое исчисляется в секундах и занимает очень мало места на диске – всего 4 или 8 байт. С помощью такого способа кодирования программисты могут "спрятать" любую дату в одно число, и легко конвертировать его обратно в понятный пользователям формат.
Unix время (еще его называют Unix time или POSIX time) удобно использовать в различных операционных системах и языках программирования, так как оно отображается в виде одной величины, а не определенного количества полей, занимающих место. К тому же, UNIX time полностью соответствует стандарту UTC (в том числе и в високосных годах) – в таком случае соответствующие значения секунд просто повторяются.
Терминология Unix
Пару слов о терминах.
Итак, Unix-временем (или POSIX-временем) считается количество секунд, которые прошли с полуночи 1 января 1970 года до настоящего времени.
Unix Timestamp (временная метка) – это "зафиксированное" время, иными словами – конкретная дата, запечатленная в числе.
UTC (Universal Coordinated Time) – это Всемирное координированное время, которое "фиксируется" на нулевом меридиане, и от которого ведется отсчет географических часовых поясов.
Насколько "долговечна" данная система?
Всего лишь через пару десятков лет, а именно 19 января 2038 года в 03:14:08 по UTC Unix time достигнет значения 2147483648, и компьютерные системы могут интерпретировать это число как отрицательное. Ключ к решению данной проблемы лежит в использовании 64-битной (вместо 32-битной) переменной для хранения времени. В таком случае, запаса числовых значений Unix time хватит человечеству еще на 292 миллиарда лет. Неплохо, правда?
Unix время – одно для всех
Если вы живете в Лондоне или Сан-Франциско, а ваши друзья – в Москве, то "сверить часы" можно по Unix time: эта система в данный момент времени едина для всего мира. Естественно, если время на серверах выставлено правильно. А с помощью инструмента "Unixtime конвертер" такая конвертация займет у вас доли секунды.