2010-06-04 10 views
6

Tôi có định dạng 2:01:20 PM trong một nhãn; sau một số phép tính, tôi cần thay đổi giờ và/hoặc phút của nhãn đó.Làm thế nào để đặt phút giờ trong nsdate theo chương trình?

Tức là, Có thể thay đổi giá trị nhãn đó, bằng cách chuyển đổi nó thành đối tượng NSDate và sửa đổi giờ và phút như 3:20:30 PM không?

Có phương pháp setter nào cho điều này không?

+0

nếu tôi sử dụng [chuỗi1 replaceCharactersInRange: NSMakeRange (0,5) withString: [ NSString stringWithFormat: @ "% d: 0% d", giờ, finalMinute] tôi cần kiểm tra nhiều điều kiện nếu phút nhỏ hơn 10 nối chuỗi là 01,02,03 .... và nếu giờ lớn hơn hơn 9 tôi cần thay đổi phạm vi, vì 12:03:23 PM ..... – mac

Trả lời

1

Nếu bạn cần tính toán các phiên bản thực cụ thể trong thời gian, ví dụ: 3:20:30 PM ngày 23 tháng 10 năm 2010, sau đó bạn muốn sử dụng NSCalendar cho phép bạn phân hủy ngày và thực hiện các phép tính liên quan đến ngày tháng.

Lời cảnh báo. Tính toán ngày và thời gian phức tạp và chi tiết đáng ngạc nhiên. Mong đợi để dành một vài giờ học API.

+0

mã của tôi là NSDateFormatter * timeFormatter = [[[[NSDateĐịnh dạng phân tán] init] autorelease]; \t [timeFormatter setDateStyle: NSDateFormatterNoStyle]; \t [timeFormatter setTimeStyle: NSDateFormatterMediumStyle]; \t NSDate * stringTime = [Ngày NSDate]; \t NSString * formattedDateStringTime = [timeFormatter stringFromDate: stringTime]; \t \t // NSLog (@ "chuỗi thời gian là% @", formattedDateStringTime); \t \t time.text = formattedDateStringTime; ở đây, vấn đề của tôi là tôi cần phải thay đổi giờ, phút, vì vậy, nếu tôi làm theo bình luận ở trên của nó quá khó, bất kỳ lớp học khác để làm cho nó dễ dàng TechZen. Cảm ơn bạn đã trả lời nhanh. – mac

25

Câu trả lời cho câu hỏi của bạn đầu tiên "? làm thế nào để thiết lập giờ phút trong nsdate programatically" là sau đây:

NSDate* result; 
    NSDateComponents *comps = [[NSDateComponents alloc] init]; 
    [comps setMinute:0]; 
    [comps setHour:0]; 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    result = [gregorian dateFromComponents:comps]; 
    [comps release]; 
+0

Nó chọn ngày là "0001-01-01". Cách đặt ngày hiện tại? – Satyam

+1

Đây là cách bạn có thể đặt ngày hiện tại trong các thành phần: 'Thành phần NSDateComponents * = [thành phần lịch: NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate: [NSDate date]]; ' – iBug