我想檢查一下,如「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. 在C++中比較兩個ISO 8601
- 2. Facebook FQL:比較ISO-8601時間戳嗎?
- 3. 如何在JavaScript中獲得ISO 8601時間格式的時間?
- 4. 在ISO當前時間8601格式
- 5. 格式化iso-8601日期字符串
- 6. 用於ISO 8601格式化持續時間的庫
- 7. ISO 8601個時間戳C++
- 8. Android時間ISO 8601
- 9. 與ISO時間(8601)
- 10. 從ISO 8601時間戳顯示12小時時間格式
- 11. 正確的ISO 8601格式
- 12. 比較2 ISO 8601時間戳和輸出秒/分鐘差
- 13. 如何日期時間轉換爲ISO 8601格式
- 14. 將ISO 8601時間格式轉換爲正常持續時間
- 15. Python中的ISO時間(ISO 8601)?
- 16. Swift NSDate iso 8601格式
- 17. PHP - 日期格式ISO 8601
- 18. Ruby on Rails - YouTube API - 如何格式化持續時間ISO 8601(PT45S)
- 19. 如何比較格式爲HH:MM:SS的兩個時間字符串?
- 20. 時間ISO 8601在Ruby中
- 21. 在IOS中兩次之間比較時間(格式爲HH:MM:SS)
- 22. 將ISO 8601格式的時間段轉換爲ticks /毫秒
- 23. ExtJS從ISO 8601格式的服務器顯示日期/時間
- 24. 基於如何獲得ISO 8601格式的時間戳與時區在PHP
- 25. PHP轉換爲YouTube時間格式(ISO 8601)
- 26. 如何在ISO 8601中使用JavaScript中的時區偏移格式化日期?
- 27. UTC/ISO 8601格式的日期轉換
- 28. PHP ISO 8601的格式轉換問題
- 29. PostgreSQL的ISO 8601格式日期
- 30. 格式爲ISO 8601的日期操作?
是有沒有更簡單如何做到這一點?如果可能的話,我不想使用庫 – Suchi 2011-12-16 18:43:40
@Suchi恐怕現在我想不出一個更簡單的方法。 – 2011-12-16 18:45:31