我想檢查一下,如「2011-03-29T15:57:02.680-04:00」是否在當前時間之前。我會如何去做這件事?iOS - 如何比較兩個ISO 8601格式化的時間?
0
A
回答
4
約ISO8601日期和時間格式的偉大的事情是,你可以簡單地按字母順序比較字符串。因此,您可以將當前時間寫入ISO8601格式的NSString,然後在兩個字符串上使用NSString的compare
方法。
但是,通常比較NSDate
對象更好。我用兩個輔助功能使用strftime
和strptime
的ISO日期字符串,是一個NSDate之間轉換 - 這些功能只是做yyyy-mm-dd
的一部分,但你應該能夠輕鬆地擴展他們足夠:
NSString* ISOStringWithDate(NSDate* date)
{
char buf[11]; // Enough space for "yyyy-mm-dd\000"
time_t clock = [date timeIntervalSince1970];
struct tm time;
gmtime_r(&clock, &time);
strftime_l(buf, sizeof(buf), "%Y-%m-%d", &time, NULL);
return [NSString stringWithUTF8String:buf];
}
NSDate* dateWithISOString(NSString* dateString)
{
struct tm time;
memset(&time, 0, sizeof(time));
if (!strptime_l([dateString UTF8String], "%Y-%m-%d", &time, NULL))
{
return nil;
}
time_t clock = timegm(&time);
return [NSDate dateWithTimeIntervalSince1970:clock];
}
4
使用Peter Hosey的ISO8601DateFormatter
類將其解析爲NSDate
對象,然後將其與[NSDate date]
進行比較。
一個例子:
NSString *iso8601String = ...;
ISO8601DateFormatter *formatter = [[ISO8601DateFormatter alloc] init];
NSDate *isoDate = [formatter dateFromString:iso8601String];
[formatter release]; //if you're not using ARC
BOOL isBeforeCurrent = [[NSDate date] compare:isoDate] == NSOrderedAscending;
相關問題
- 1. Facebook FQL:比較ISO-8601時間戳嗎?
- 2. 用於ISO 8601格式化持續時間的庫
- 3. 從ISO 8601時間戳顯示12小時時間格式
- 4. 正確的ISO 8601格式
- 5. Python中的ISO時間(ISO 8601)?
- 6. PHP - 日期格式ISO 8601
- 7. Swift NSDate iso 8601格式
- 8. Ruby on Rails - YouTube API - 如何格式化持續時間ISO 8601(PT45S)
- 9. 如何比較格式爲HH:MM:SS的兩個時間字符串?
- 10. 將ISO 8601格式的時間段轉換爲ticks /毫秒
- 11. PHP轉換爲YouTube時間格式(ISO 8601)
- 12. 格式爲ISO 8601的日期操作?
- 13. UTC/ISO 8601格式的日期轉換
- 14. PHP ISO 8601的格式轉換問題
- 15. C#ISO 8601時間間隔驗證
- 16. c#:我如何獲得ISO 8601格式的數據時間不是字符串?
- 17. 如何比較兩個日期時間
- 18. 如何比較兩個時間戳erlang?
- 19. JavaScript日期:toGMTString,還有ISO 8601格式?
- 20. 比較兩個時間值
- 21. 比較兩個時間戳
- 22. 比較兩個時間值
- 23. 與TZ日期時間格式,日期時間specfied在R(ISO 8601)
- 24. iOS - 如何比較兩次?
- 25. Laravel Carbon,如何格式化以比較日期時間?
- 26. 如何按照ISO 8601開始/結束在PHP中簡潔地格式化時間間隔?
- 27. ISO 8601日期時間表示
- 28. 使用ISO 8601日期格式添加兩秒
- 29. 比較12小時的格式時間
- 30. 比較12小時格式的時間
是有沒有更簡單如何做到這一點?如果可能的話,我不想使用庫 – Suchi 2011-12-16 18:43:40
@Suchi恐怕現在我想不出一個更簡單的方法。 – 2011-12-16 18:45:31