Конвертировать NSDate в NSInteger, а затем в NSString - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь дублировать функциональность, которая в настоящее время реализована в VB. Что мне нужно сделать, это преобразовать дату в длинное целое число, а затем преобразовать его в строку. Мне также нужно преобразовать длинное целое число в значение HEX для этого целого числа, а затем в строку.

Вот код, который я использую в VB.

If dteCreated <> #12:00:00 AM# Then
strHash = CStr(CLng(dteCreated))

If InStr(1, strHash, ".", vbTextCompare) > 0 Then
    strHash = Left(strHash, InStr(1, strHash, ".", 1) - 1) & "_" & Mid(strHash, InStr(1, strHash, ".", 1) + 1)
Else
    strHash = strHash & "_00000"
End If

strHash = strHash & "_" & CStr(Hex(intereq))

Две переменные: dteCreated (Date) и intereq (Long). Эта сборка представляет собой хешированную строку запроса, которая декодируется на нашем сервере.

Может ли кто-нибудь помочь с методами, которые мне понадобятся в Objective-C, чтобы получить те же функции?

1 Ответ

7 голосов
/ 15 ноября 2011

Вы можете использовать ссылку с 1970 года для преобразования в NSTimeInterval, который является двойным, используйте:

- (NSTimeInterval)timeIntervalSince1970
+ (id)dateWithTimeIntervalSince1970:(NSTimeInterval)seconds

Вы можете конвертировать double в int и обратно с кастом, теряя только доли секунды.

Пример:

NSDate *today = [NSDate date];
NSLog(@"today %@", today);

NSTimeInterval interval = [today timeIntervalSince1970];
NSString *hexInterval = [NSString stringWithFormat:@"%08x", (int)interval];
NSLog(@"hexInterval %@", hexInterval);

unsigned intInterval;
NSScanner *scanner = [NSScanner scannerWithString:hexInterval];
[scanner scanHexInt:&intInterval];

NSDate *date = [NSDate dateWithTimeIntervalSince1970:interval];
NSLog(@"date  %@", date);

Вывод NSLog:

today 2011-11-15 18:34:07 +0000
hexInterval 4ec2acf0
date  2011-11-15 18:34:07 +0000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...