2011-11-10 37 views
5

Trong ứng dụng của tôi, tôi nhận được ngày và thời gian bắt đầu của cùng một ngày và thời gian kết thúc. Thời gian kết thúc có thể là thời điểm của ngày hôm sau.NSDate: Thêm một ngày dựa trên Thời gian

example : Date : 11/01/2011 
      start time : 5:30 PM 
      end time : 4:30 AM (of next day morning) 

Tôi không có ngày kết thúc.

Làm cách nào để thêm một ngày vào ngày bắt đầu dựa trên thời gian kết thúc. Tôi đã giới thiệu nhiều câu trả lời tại SO nhưng không thể tìm ra giải pháp.

+0

câu hỏi của bạn không rõ ràng. Bạn có thể vui lòng chỉ định một số điểm như bạn đang lấy nó ở đâu và bạn muốn thay đổi ngày như thế nào. – Robin

+0

Tôi nhận được nó từ máy chủ sử dụng dịch vụ web – Maulik

+0

Xin chào, giải pháp cuối cùng cho việc này là gì. Khi bạn không có ngày kết thúc. – MinuMaster

Trả lời

4

bạn nên sử dụng chức năng này

NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:86400]; 

đây 86400 là 60 (giây) * 60 (phút) * 24 (giờ).
Nếu STARTDATE của bạn không phải là từ ngày hiện tại thì bạn có thể sử dụng phương pháp này

- (id)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)anotherDate 

bây giờ bạn đang nhận được như thế này

example : Date : 11/01/2011 
      start time : 5:30 PM 
      end time : 4:30 AM (of next day morning) 

vì vậy bạn có thể có hai ngày, đại diện cho thời gian bắt đầu và kết thúc thời gian . Sử dụng phương pháp bên dưới để nhận khoảng thời gian

- (NSTimeInterval)timeIntervalSince1970 

bây giờ bạn có hai khoảng thời gian cho hai ngày khác nhau, phải không? Bây giờ chỉ cần trừ nó và bạn sẽ có được những gì bạn muốn.

+0

làm thế nào tôi có thể nhận được NSTimeInterval của 5:30 PM đến 4:40 AM? vì tôi không có ngày 4:30 sáng ??? – Maulik

+0

vui lòng xem câu trả lời đã chỉnh sửa của tôi .. – Ankur

+0

Tôi không có hai ngày .. chỉ có một ngày có thời gian bắt đầu và có thời gian kết thúc. Bây giờ dựa trên thời gian kết thúc, tôi phải tính ngày cho dù thời gian kết thúc là cho cùng một ngày hoặc ngày tiếp theo. – Maulik

1

Phương pháp bẩn (KHÔNG kiểm tra DST): Sẽ dễ dàng hơn nếu bạn chuyển đổi mọi thứ thành các đơn vị chung (tức là NSTimeInterval/double giây). Kiểm tra xem thời gian kết thúc có nhỏ hơn thời gian bắt đầu (được chuyển đổi thành giây từ nửa đêm) hay không. Trừ startSeconds từ endSeconds, nếu kết quả là số âm, cộng thêm 24 giờ giây (24 * 60 * 60 = 86400). Thêm kết quả vào ngày/giờ bắt đầu.

2

quyết: theo câu trả lời của Akkis ...

NSDate *startDate = [df dateFromString:startingDateTime]; 
    NSDate *endDate = [df dateFromString:endingDateTime]; 

    NSComparisonResult result; 
    result = [startDate compare:endDate]; 

    if(result == NSOrderedDescending) 
    { 
     NSLog(@"newDate is greater"); 

     endDate = [endDate dateByAddingTimeInterval:60*60*24]; 
    } 
Các vấn đề liên quan