2009-11-06 36 views

Trả lời

129

Bạn muốn có một date formatter. Dưới đây là một ví dụ:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"dd-MM-yyyy HH:mm"]; 

NSDate *currentDate = [NSDate date]; 
NSString *dateString = [formatter stringFromDate:currentDate]; 
+0

Đã chỉnh sửa cho iphone-ness. –

+2

đừng quên tiết lộ trình định dạng của bạn.

+0

Trừ khi bạn muốn giữ nó xung quanh; quản lý bộ nhớ có thể hoặc không thể tham gia vào vấn đề. –

15

Hoặc sử dụng NSDateFormatter như Carl nói, hoặc chỉ sử dụng tốt cũ strftime, cũng là hoàn toàn hợp lệ Objective-C:

#import <time.h> 
time_t currentTime = time(NULL); 
struct tm timeStruct; 
localtime_r(&currentTime, &timeStruct); 
char buffer[20]; 
strftime(buffer, 20, "%d-%m-%Y %H:%M", &timeStruct); 
+0

Lưu ý rằng bạn không thể làm quá nhiều với một chuỗi C trong Mục tiêu C. Điều này có thể thuận tiện hơn khi ghi một cái gì đó vào bàn điều khiển. Bạn chỉ có thể nói 'NSLog (@"% s ", bộ đệm)'. –

+3

Bất cứ điều gì bạn có thể làm với một chuỗi C trong C, bạn có thể làm trong Objective-C. Mà là để nói, khá nhiều tất cả mọi thứ. Người ta nên cảm thấy tự do để sử dụng cả hai chuỗi C và NSStrings, và chọn một trong những thích hợp cho trường hợp sử dụng hiện tại. Cá nhân tôi sẽ đi với giải pháp của Carl, nhưng điều quan trọng là phải biết rằng đó không phải là cách duy nhất. –

+0

Tôi sẽ nói lý do không sử dụng strftime (mặc dù nó tạo ra một chuỗi C mà sau đó bạn phải chuyển đổi) là bạn cũng mất đi tính linh hoạt cao hơn nhiều của các tùy chọn định dạng ngày NSDateFormatter, bao gồm độ dài thay đổi của kết quả số và Sớm. –

7

Đây là một giải pháp đơn giản:

- (NSString *)stringWithDate:(NSDate *)date 
{ 
    return [NSDateFormatter localizedStringFromDate:date 
             dateStyle:NSDateFormatterMediumStyle 
             timeStyle:NSDateFormatterNoStyle]; 
} 

Thay đổi dateStyletimeStyle để khớp với yêu cầu định dạng của bạn.

+0

Bạn không nên tạo ngày ở đâu đó? Bạn không chuyển nó vào. – Randy

+0

Bắt tốt @Randy, vừa cập nhật hàm để chuyển trong đối tượng 'date' làm tham số. – Zorayr

3

Có lẽ đây sẽ là dễ đọc hơn:

NSDateFormatter *date = [[NSDateFormatter alloc] init]; 
    [date setDateFormat:@"HH:mm"]; 
    NSString *dateString = [date stringFromDate:[NSDate date]]; 
    [self.time setText:dateString]; 

Trước hết chúng ta tạo ra một NSDateFormatter tích hợp sẵn trong obj-c với tên ngày, sau đó chúng tôi áp dụng nó bằng cách [[NSDateFormatter alloc] init];. Sau đó, chúng tôi nói với nhà bảo mật mã rằng chúng tôi muốn ngày của chúng tôi có HOUR/MINUTE/SECOND. Cuối cùng, chúng ta nên tạo một chuỗi để hoạt động với cảnh báo hoặc giá trị thiết lập của nhãn, để làm điều này, chúng ta nên tạo một chuỗi với phương thức NSString sau đó chúng ta sử dụng: [date stringFromDate: [NSDate date]]

Vui chơi với nó.

Các vấn đề liên quan