2012-12-19 49 views
2

我想要一個比較兩個ISO 6801時間戳並返回最近一個時間戳的函數。我無法找出一個簡單的方法來創建一個功能在C++中比較兩個ISO 8601

例如鑑於string s1 = 2012-10-10 09:42:00;string s2 = 2012-10-10 09:52:00;

compare_timestamp(S1,S2)將返回S2

+4

ISO 8601的設計使你可以比較字符串按字典(例如,通過'strcmp')來確定它們的順序時間。 – Nemo

+0

@Nemo所以將兩個'std :: string'轉換爲'const char *'然後使用'strcmp'? – pyCthon

回答

4

如果探微需要找到更近,字符串比較就足夠了。現在

string &compare_timestamp(string &s1, string &s2) { 
    return s1.compare(s2) > 0 ? s1 : s2; 
} 
+1

我不得不對此表示不滿意。 –

2
std::string & compare_timestamp(std::string & lhs, std::string & rhs) { 
    return std::max(lhs, rhs); 
} 
std::string const & compare_timestamp(std::string const & lhs, std::string const & rhs) { 
    return std::max(lhs, rhs); 
} 

,更好的解決方案是創建一個TimeStamp類,而不是用std::string直接合作。該TimeStamp可以從內部舉行std::string和過載operator<只是推遲到std::string::operator<,但你會使用strong types