2011-12-06 64 views
0

我使用下面的代碼來生成NSDate -> NSString的NSDate給空結果

+(NSString *)getCurrentTime 
{ 
    NSDate *now = [NSDate date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy hh:MM:SS a"]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
    NSString* str =[dateFormatter stringFromDate:now]; 
    [dateFormatter release]; 
    NSLog(@"%@",str); 
    return str; 
} 

一切都在上面的代碼罰款。我正在使用上面的代碼在數據庫中存儲字符串。現在,雖然檢索該字符串給我NULL。以下是我的代碼以特定格式檢索日期

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"hh:MM:SS a"]; 
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
    NSDate *dt =[dateFormatter dateFromString:crdInfo.swipeTime]; 
    NSLog(@"Date : %@",dt); 
    [dateFormatter release]; 

我應該如何檢索或以特定格式存儲?我crdInfo.swipeTime被檢索的字符串propertly ...

+0

看起來還好我.... –

+0

@AnkitSrivastava:但沒有工作... – DShah

+1

檢查我已經檢查了...... crdInfo.swipeTime – Luke

回答

1

由於納拉亞納建議您需要使用相同的格式檢索的已存儲的日期。檢索它如下: -

NSDateFormatter *reDateFormatter = [[NSDateFormatter alloc] init]; 
    [reDateFormatter setDateFormat:@"dd-MM-yyyy hh:MM:SS a"]; 
    [reDateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
    NSDate *dt = [reDateFormatter dateFromString:str]; 
    NSLog(@"The Date : %@",dt); 

    [reDateFormatter setDateFormat:@"hh:MM:SS a"]; 
    NSString *currentTime = [reDateFormatter stringFromDate:dt]; 
    NSLog(@"%@",currentTime); 

希望它可以幫助你。

+0

檢查更新的代碼... – Maulik

3

首先,爲什麼不只是存儲的NSDate對象或紀元時間戳?這將給你未來更多的靈活性。

我們您的問題,我懷疑這是由於您的NSDateFormatter的配置,你在一個格式保存它,並試圖將其轉換爲使用不同格式的日期。使格式相同,然後重試。如果你想以不同的方式顯示它,你可能需要使用存儲的格式將其轉換爲NSDate,然後再次使用另一個日期格式化程序將其作爲字符串以您想要的格式獲取。

0

嘗試將其格式化爲dd-MM-yyyy hh:mm:ss一個。

你寫dd-MM-yyyy hh:MM:SS一個地方MMhh:MM:SS給人月這是在這種格式無法識別,沒有一點寫大寫在前SS爲秒

希望你明白。

+0

我認爲他想只檢索從日期開始。 – Maulik

+0

@Parth Bhatt:我做過一些演示應用,我嘗試了使用大小寫的所有組合......但是從我的測試結果來看,我發現它只與** HH **和** hh **有關。你沒有提及** a **部分,即AM/PM部分。所以我解決了那個Demo應用中的問題。但我也嘗試過這種方式,它不工作...反正...謝謝,並建議如果你有不同的想法... – DShah