簡體   English   中英

從字符串創建NSDate

[英]create a NSDate from a string

我有一個像這樣的NSString@"3/15/2012 9:15 PM"我想將它轉換為NSDate ,我這樣做了:

NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"mm/dd/yyyy HH:mm"];
NSDate *date = [formatter dateFromString:];

NSLog(@"%@", date);  // date = null

謝謝你能幫我嗎

使用以下解決方案

NSString *str = @"3/15/2012 9:15 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"MM/dd/yyyy HH:mm a";

NSDate *date = [formatter dateFromString:str];

NSLog(@"%@", date);

編輯:對不起,格式應如下:

formatter.dateFormat = @"MM/dd/yyyy hh:mm a";

顯示的時間將是GMT時間。 因此,如果您添加/減去時區,它將是晚上9:15。

編輯:#2

使用方法如下。 你也會得到准確的時間。

NSString *str = @"3/15/2012 9:15 PM";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"MM/dd/yyyy hh:mm a";

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];

formatter.timeZone = gmt;

NSDate *date = [formatter dateFromString:str];

NSLog(@"%@",date);

你的格式化程序錯了。 根據NSDateFormatter文檔,它應該是“MM / dd / yyyy h:mm a”。 您還可能希望按照日期格式設置指南中的說明設置區域設置:

如果您正在使用固定格式的日期,則應首先將日期格式化程序的區域設置設置為適合您的固定格式的區域設置。 在大多數情況下,最佳選擇的語言環境是en_US_POSIX,這是一種專門設計用於產生美國英語結果的語言環境,無論用戶和系統偏好如何。

嘗試這個:

NSString *str = @"3/15/2012 9:15 AM";
NSLocale *enUSPOSIXLocale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setLocale:enUSPOSIXLocale];
[formatter setDateFormat:@"MM/dd/yyyy h:mm a"];
NSDate *date = [formatter dateFromString:str];

NSLog(@"%@",date);

輸出:

2012-03-19 12:37:27.531 Untitled[6554:707] 2012-03-15 08:15:00 +0000

嗯 - 你出錯了幾個原因

  1. NSDateFormatter是嚴格的,你沒有。
  2. 你沒有提供str到dateFromString:
NSString* str = @"3/15/2012 9:15 PM";
NSDateFormatter* formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MM/dd/yyyy HH:mm a"];
NSDate* date = [formatter dateFromString:str];


NSLog(@"%@",date);
  NSString *str =@"3/15/2012 9:15 PM";
NSDateFormatter *dateformatter = [[NSDateFormatter alloc]init];
   [dateformatter setDateFormat:@"MM/dd/yyyy"];
NSArray *firstSplit = [str componentsSeparatedByString:@" "];
NSDate *dateSelected = [dateformatter dateFromString:[firstSplit objectAtIndex:0]];

    [dateformatter setDateFormat:@"mm:ss"];
NSDate *dateSelected2 = [dateformatter dateFromString:[firstSplit objectAtIndex:1]];
NSLog(@"%@",[dateformatter stringFromDate:dateSelected2]);

NSLog(@"%@",[dateformatter stringFromDate:dateSelected]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM