2013-09-03 26 views
6

Tôi đang cố gắng để có được một NSDate vào định dạng: 20/05/2014 22:30Làm thế nào để định dạng một NSDate trong dd/MM/YYYY

đây là đoạn code tôi hiện có. [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"]; làm việc này, nhưng định dạng không giống như 20/05/2014 22:30 nó sẽ hiển thị ngày tháng ở định dạng như: 2013/12/03 00:00:00 00: 00: 00

và sau đó khi tôi sử dụng:

[dateFormat setDateFormat:@"MM/dd/yyyy"]; Tôi nhận được giá trị null được trả về thay vì ngày được định dạng.

// timestamp conversion 
    NSString *str = [timeStamp objectAtIndex:indexPath.row]; 
    // convert to date 
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    // [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"]; 

[dateFormat setDateFormat:@"MM/dd/yyyy"]; 

    NSDate *dte = [dateFormat dateFromString:str]; 
    cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ]; 

chuỗi str sản lượng ban đầu trước khi định dạng là str 2013-08-23T15:21:19+02:00

nhờ sự giúp đỡ nào

+0

bạn đang thiết lập nsdate nhãn nên nó sẽ như thế nào 2013/12/03 00:00 : 00 giờ: 00: 00 – Pratik

+0

http://www.unicode.org/reports/tr35/tr3 5-25.html # Date_Format_Patterns – Desdenova

+1

Không có bất kỳ ý tưởng nào về định dạng ngày tháng, thật khó để chuyển đổi nó cho đến nay. cho chúng ta một ví dụ về giá trị có thể cho str. – Inoka

Trả lời

34

bạn phải làm như thế này nhưng trước tiên hãy kiểm tra các định dạng ngày của str của bạn

NSString *str = [timeStamp objectAtIndex:indexPath.row]; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"]; 


NSDate *dte = [dateFormat dateFromString:str]; 

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"]; 
cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",[dateFormat stringFromDate:dte]]; 

lần đầu tiên định dạng thiết lập ngày tương tự như trong str của bạn.

+0

Đồng thời xem xét đặt' locale' như được đề xuất trong [Apple Technical Q & A 1480] (https://developer.apple.com/library/ios/qa/qa1480/_index.html). – Rob

1

Đặt định dạng ngày của bạn để

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"]; 

// timestamp chuyển đổi

NSString *str = [timeStamp objectAtIndex:indexPath.row]; 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"]; 

NSDate *dte = [dateFormat dateFromString:str]; 
cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ]; 
3

Trước tiên hãy đặt NSDateFormatter thành định dạng bạn đang nhận dữ liệu để giữ nguyên nó thành đối tượng NSDate và sau đó lại sử dụng định dạng mong muốn để thay đổi thành định dạng bạn muốn và hiển thị. Để biết thêm thông tin, bạn có thể xem câu trả lời Pratik.

Hy vọng điều này sẽ hữu ích.

2

Tôi nghĩ rằng việc thực thi locale` và giao diện của nó theo chương trình là một ý tưởng tồi trừ khi nó được xác định là yêu cầu.

Cách khác là sử dụng setDateStyle trên NSDateFormatter, với một trong các định dạng được chỉ định trong System Preferences -> Language & Text -> Region -> Dates. Có định dạng Ngắn, Trung bình và Dài để chọn cho cả Thời gian và Ngày. kiểu dáng có thể được liệt kê trong tài liệu dưới NSDateFormatterStyle

Bây giờ để trả lời câu hỏi của bạn: Nếu bạn muốn thêm định dạng thời gian ngắn sang định dạng ngày vừa sau đó bạn sẽ nhận được kết quả mong muốn của bạn, đồng thời duy trì cả hai localizability và tùy biến.

3

đặt định dạng ngày của bạn trong [dateFormat setDateFormat: @ "dd/MM/yyyy HH: mm"]; để mã u viết theo cách

// timestamp conversion 
NSString *str = [timeStamp objectAtIndex:indexPath.row]; 
// convert to date 
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
// [dateFormat setDateFormat:@"YYYY-MM-dd\'T\'HH:mm:ssZZZZZ"]; 

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"]; 

NSDate *dte = [dateFormat dateFromString:str]; 
cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",dte ]; 

Tôi hy vọng nó hữu ích.

2

Chỉ cần sử dụng mã dưới đây và bạn sẽ nhận được kết quả:

// timestamp chuyển đổi

NSString *str = [timeStamp objectAtIndex:indexPath.row]; 

// chuyển đổi sang ngày

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd T HH:mm:ss ZZZZ"]; 

NSDate *dte = [dateFormat dateFromString:str]; 

[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm"]; 

cell.timeStampLabel.text = [NSString stringWithFormat:@"%@",[dateFormat stringFromDate:dte]]; 
+0

cảm ơn, tôi đã thử nhưng tôi nhận được một giá trị null cho ngày được định dạng. giá trị str ban đầu của tôi là: str 2013-08-23T15: 21: 19 + 02: 00 – user2588945

+0

Tôi đã chỉnh sửa câu trả lời của tôi theo chuỗi đầu vào của bạn. Hãy kiểm tra. – Rachit

0

có một cái nhìn tại DateFormatters để sử dụng cần thiết định dạng: Apple Doc

0

** NSString * strNo tificationTimeAndDate = "Ngày của bạn";

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss.z"]; 

hoặc

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss+z"]; 

hoặc

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ssz"]; 

hoặc

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss z"]; 
NSDate *commentdate = [dateFormat 
dateFromString:strNotificationTimeAndDate];** 
Các vấn đề liên quan