Перейти к содержимому

Как конвертировать unix время в excel

  • автор:

Конвертер Обычного формата Времени в 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 конвертер" такая конвертация займет у вас доли секунды.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *