比较c++中的日间字符串



如果我有一个字符串以"mm/dd-hh:mm"格式存储Day和Time我如何创建两天前的字符串?

您可以使用Howard Hinnant的日期库。

  1. 首先,通过添加一些可以被解析为年份而不是闰年(例如"01/")的东西来修复输入字符串,以便date::from_stream正确地将日期和时间输入字符串解析为时间点(tp1)。
  2. tp1的日期提前两天,也就是说,tp1 + days{2}
  3. 使用date::format将新的日期格式化为字符串。
  4. (演示)

#include <chrono>
#include <date/date.h>
#include <iostream>  // cout
#include <sstream>  // istringstream
#include <string>
std::string two_days_ahead(const std::string& dt) {
auto fixed_dt{std::string{"01/"} + dt};
std::istringstream iss{fixed_dt};
date::sys_time<std::chrono::minutes> tp1{};
date::from_stream(iss, "%y/%m/%d-%H:%M", tp1);
return date::format("%m/%d-%H:%M", tp1 + date::days{2});
}
int main() {
std::cout << two_days_ahead("10/30-09:50") << "n";
}
// Input: "10/30-09:50"
// Output: 11/01-09:50

相关内容

  • 没有找到相关文章

最新更新