Преобразование даты в формате JSON (тики) в NSDate

objective-c json date-conversion

9035 просмотра

4 ответа

Кто-нибудь знает, как преобразовать дату (тики) JSON в NSDate в Objective-C? Может кто-нибудь выложить какой-нибудь код?

Источник Размещён: 13.11.2019 11:29

Ответы (4)


3 плюса

Решение

Я предполагаю здесь, но ваше значение JSON - это количество миллисекунд с 1970 года, верно? Вы можете использовать dateWithTimeIntervalSince1970:метод NSDate для возврата объекта NSDate с правильным временем. Просто убедитесь, что вы преобразовали число миллисекунд JSON в секунды, прежде чем передать его в NSDate - в большинстве мест Cocoa использует NSTimeInterval, который представляет интервал в секундах.

Автор: Marc Charbonneau Размещён: 12.08.2009 01:40

2 плюса

Это выглядит примерно так:

// Input string is something like: "/Date(1292851800000+0100)/" where
// 1292851800000 is milliseconds since 1970 and +0100 is the timezone
NSString *inputString = [item objectForKey:@"DateTimeSession"];

// This will tell number of seconds to add according to your default timezone
// Note: if you don't care about timezone changes, just delete/comment it out
NSInteger offset = [[NSTimeZone defaultTimeZone] secondsFromGMT];

// A range of NSMakeRange(6, 10) will generate "1292851800" from "/Date(1292851800000+0100)/"
// as in example above. We crop additional three zeros, because "dateWithTimeIntervalSince1970:"
// wants seconds, not milliseconds; since 1 second is equal to 1000 milliseconds, this will work.
// Note: if you don't care about timezone changes, just chop out "dateByAddingTimeInterval:offset" part
NSDate *date = [[NSDate dateWithTimeIntervalSince1970:
                 [[inputString substringWithRange:NSMakeRange(6, 10)] intValue]]
                dateByAddingTimeInterval:offset];

https://gist.github.com/726910 )

Автор: Ali Размещён: 03.12.2010 07:21

0 плюса

Вы должны были бы определить локаль клиента, чтобы иметь возможность сделать это, и, если ваш клиент не знает, как это сделать, вероятно, нет особого смысла.

Описание NSDateWithLocale: будет способом, которым вы форматируете его для другой локали. И timeIntervalSince1970 вернется к (секундам) с 1970 года, которые можно умножить на 1000, чтобы получить мс для возврата клиенту. Это все в документации NSDate.

http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html

Автор: AlBlue Размещён: 12.08.2009 07:13

0 плюса

В соответствии с этой страницей: http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx тики начинаются 1 января 0001 года, поэтому dateWithTimeIntervalSince1970:автоматическая настройка для работы с тиками не производится. Вы все еще можете использовать этот метод, но следует учесть разницу.

Автор: Jason Fuerstenberg Размещён: 26.09.2012 01:48
Вопросы из категории :
32x32