Получить текущую дату и время в структуре FileTime в Objective-C

Я пытаюсь получить текущую дату и время в структуре FileTime в target-c, возможно ли это? Спасибо.


person Ahmad Kayyali    schedule 14.09.2011    source источник
comment
Время файла представляет собой конкретную дату и время, когда данный файл был создан, в последний раз к нему обращались или в который в последний раз записывались. Время файла хранится в структуре FILETIME. Эта структура используется с различными вызовами Win32 API.   -  person Ahmad Kayyali    schedule 15.10.2011


Ответы (2)


Я нашел элегантное решение для этого:

/**
 * number of seconds from 1 Jan. 1601 00:00 to 1 Jan 1970 00:00 UTC
 */
#include <sys/time.h>
#define EPOCH_DIFF 11644473600LL

unsigned long long getfiletime()
{
    struct timeval tv;
    unsigned long long result = EPOCH_DIFF;
    gettimeofday(&tv,NULL);
    result += tv.tv_sec;
    result *= 10000000LL;
    result += tv.tv_usec * 10;
    return result;
}

сохранить текущее время в FileTime, используя:

NSString* timeStamp  = [NSString stringWithFormat:@"%llu",getfiletime()];
person Ahmad Kayyali    schedule 15.09.2011
comment
Ваш способ работает, но вы можете сделать то же самое, что предложил Пранав, используя другую строку формата. - person sosborn; 15.09.2011
comment
Я пытаюсь использовать это, чтобы получить вывод в Objective-C, аналогичный выводу, который я получаю от DateTime.Now.ToFileTimeUtc() в Unity. Кажется, это должно быть именно то, что мне нужно, но когда я запускаю их одновременно, эта функция возвращает число с разницей примерно в 252 276 759 470 от результата Unity. Любая идея, почему это было бы? - person Nerrolken; 19.04.2018

Вы имеете в виду "ГГГГ:ММ:ДД:ЧЧ:ММ:СС"

Вы можете использовать следующий код.

    NSDateFormatter *formatDate = [[NSDateFormatter alloc] init];
    [formatDate setDateFormat:@"yyyy:MM:dd:HH:mm:ss"];

    NSDate *now = [[NSDate alloc] init];

    NSString *formattedDate = [formatDate stringFromDate:now];

    NSLog(@"%@", formattedDate);

    [now release];
    [formatDate release];
person Pranav Bhargava    schedule 14.09.2011
comment
нет, это будет выглядеть так: среда, 14 сентября 2011 г., 13:20:42 в структуре Filetime 129604944420000000 - person Ahmad Kayyali; 14.09.2011