Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для nymphaea
9 / 2 / 0
Регистрация: 04.07.2013
Сообщений: 97
Записей в блоге: 2

Как переконвертировать время из unix epoch формата в понятную дату и время?

20.03.2015, 15:40. Показов 4469. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане!
Не могу нигде найти адекватного решения обратной конвертации из формата unix epoch в человекочитабельную форму! Есть дата, не обязательно текущая (в большинстве решений проблема решается именно с использованием текущего ремени), решение необходимо с использованием С или С++, возможно Objective-c, но с помощью библиотеки Core Foundation. Приведите пример, или скиньте ссылочку, если я что-то упустила, не нашла. Буду вам очень благодарна!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2015, 15:40
Ответы с готовыми решениями:

Как получить текущее Текущее Unix epoch время в милисекундах?
Хочу получить через эксель выписку егрюл egrul.nalog.ru Общий порядок такой: 1) Отправляю ПОСТ запрос на адрес https://egrul.nalog.ru/ ...

Как перевести Unix время в дату?
Нужно написать программу на С++, которая получит время в формате Unix-время и выведет дату и время. В коде можно использовать только...

Как получить дату и время своего (пользовательского формата)
Всем привет. Подскажите. как получить. дату и время. своего(пользовательского формата). 00.00.1900, 00:00

11
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
20.03.2015, 15:58
Что-за... Сторонние либы вообще для этого не нужны...
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
  char str[32];
 
  time_t now = time(NULL);
 
  strftime(str, sizeof(str), "%d-%m-%Y %H:%M:%S", localtime(&now));
 
  printf("%s\n", str);
 
  return 0;
}
1
 Аватар для nymphaea
9 / 2 / 0
Регистрация: 04.07.2013
Сообщений: 97
Записей в блоге: 2
20.03.2015, 16:07  [ТС]
Спасибо за ответ! Core Foundation - это не просто сторонняя либа, а библиотека языка Objective-c. И если бы вы кодили под MAC, но при этом не знали Objective-c, наиболее удобным для вас являлся бы Core Foundation Framework, так как он более понятен для С-кодеров.
0
20.03.2015, 16:36

Не по теме:

Цитата Сообщение от nymphaea Посмотреть сообщение
И если бы вы кодили под MAC, но при этом не знали Objective-c, наиболее удобным для вас являлся бы Core Foundation Framework, так как он более понятен для С-кодеров.
Ок, поверю на слово.

0
 Аватар для nymphaea
9 / 2 / 0
Регистрация: 04.07.2013
Сообщений: 97
Записей в блоге: 2
20.03.2015, 19:45  [ТС]
Вот, что у меня получилось. Насколько я поняла, в вашем примере тоже бралось локальное время (текущее) и переводилось в нормальный формат. Мне же нужно было конвертнуть дату и время, например, вчерашние. Для моего случая, мне пришлось привести число типа double со временем в формате unix epoch к типу time_t, чтобы потом это время использовать в функции strftime(...):

C++
1
2
3
4
5
    void unixEpochDateToReadableDate(double unixTimeRep, char bufForTime[])
    {
        time_t now = static_cast<time_t>(unixTimeRep);
        strftime(bufForTime, 100, "%d-%m-%Y %H:%M:%S", localtime(&now));
    }
Добавлено через 1 час 23 минуты
P.S.: Но, как говорится, "вот это поворот!" Данный код не будет правильно работать на MAC OS X, потому что абсолютное время в этой системе вычисляется не как у всех нормальных людей. В Линуксе - это число секунд с 01/01/1970 00:00:00. А в Маке: число секунд с 01/01/2001 00:00:00. Вот и как теперь жить?!
0
 Аватар для mokojumbot
160 / 160 / 30
Регистрация: 09.11.2012
Сообщений: 1,008
21.03.2015, 00:15
nymphaea,
Bash
1
gcc -dM -E - < /dev/null | sort
далее что-то типа
C
1
2
3
4
5
#if __apple__
   something_for_mac();
#elif __linux__
   something_for_linux();
#endif
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
22.03.2015, 20:46
nymphaea, стоп стоп стоп. Речь шла о
Цитата Сообщение от nymphaea Посмотреть сообщение
конвертации из формата unix epoch в человекочитабельную форму
unix epoch и есть
Цитата Сообщение от nymphaea Посмотреть сообщение
01/01/1970
Решение вам было дано. Это первое. Второе: предоставленное мной решение опирается на функционал стандартной библиотеки языка си. Так что в таком виде оно должно работать под всеми осями. Принимая во внимание вышесказанное, давайте пойдем сначала.
1) Как звучит задача?
2) Что мы имеем и в каком виде?
0
 Аватар для nymphaea
9 / 2 / 0
Регистрация: 04.07.2013
Сообщений: 97
Записей в блоге: 2
24.03.2015, 10:35  [ТС]
Да, спасибо. Решение действительно было дано. Однако, когда стала тестировать, увидела, что снова что-то не так. Стала копать глубже, и выяснила, что у МАКа это самое UNIX EPOCH на самом деле MAC Absolute Time и считается с 01/01/2001. Суть его вычисления та же - в секундах. Только на 31 год позже. И убило то, что все стандартные функции Objective-c под MAC устарели, что не даёт возможности вычислить время с помощью них. Надо изворачиваться как-то по-другому.
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
24.03.2015, 11:30
nymphaea, итак, давайте пойдем сначала. Нужна конкретика.
1) Что вам надо сделать?
2) Что дано?
3) В каком виде это самое дано?
4) В каком виде надо представить результат?
0
 Аватар для nymphaea
9 / 2 / 0
Регистрация: 04.07.2013
Сообщений: 97
Записей в блоге: 2
24.03.2015, 12:48  [ТС]
HighPredator, пишу подробно:
1) нужно переконвертировать в человекочитаемый формат время из формата (как выяснилось) MAC Absolute Time, который отличается от Unix Epoch Time на 31 год
2) дано время, записанное в переменной типа double в формате MAC Absolute Time - время в секундах с 01/01/2001 00:00:00 до какой-либо даты (не текущее время)
3) результат нужен в виде строки: "%d-%m-%Y %H:%M:%S"
0
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
24.03.2015, 13:30
Цитата Сообщение от nymphaea Посмотреть сообщение
дано время, записанное в переменной типа double
Какая функция вернула вам время в таком типе данных? Соответствует ли оно числу миллисекунд с
Цитата Сообщение от nymphaea Посмотреть сообщение
01/01/2001 00:00:0
?
0
599 / 421 / 137
Регистрация: 02.10.2008
Сообщений: 1,798
Записей в блоге: 1
24.03.2015, 20:49
Не могу понять в чём проблема-то:
http://www.opennet.ru/man.shtm... &russian=0
https://developer.apple.com/li... ime.3.html
Где ангельским по белому написано, что localtime() возвращает struct tm *, описание структуры в обоих случаях идентично. Это же POSIX - иначе и быть не может...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.03.2015, 20:49
Помогаю со студенческими работами здесь

Как получить текущую дату и время формата 12.12.2004_15:46?
как получить текущую дату и время формата 12.12.2004_15:46

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

Преобразование формата: число в дату и время
Здравствуйте. Имею в БД, в одной колонке тип данных: 41597,0179615509 41597,1092185185 41597,1181430671 При копировании колонки...

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

Как перевести время в Unix формат
Как перевести строку вида: $var = '1m2w4d6h52m15s'; 1. в секунды? 2. в &quot;1 месяц 2 недели 3 дня 6 часов 52 минуты 15 секунд&quot;? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru