【问题标题】:opening a file which has date in a formatted manner and get that date to compare打开以格式化方式具有日期的文件并获取该日期进行比较
【发布时间】:2012-03-28 06:18:09
【问题描述】:

我正在用 c++ 编程,我要求只获取日期,不需要其他组件,

我的文件中有以下内容:-

2012-03-26T15:05:24.844Z - DEBUG:   Logging_Test:test3 : Testing file logger

2012-03-26T15:05:24.844Z->这部分是从函数GetDateTime()返回的,它有一个字符串流sDateStream并返回到函数GetDateTime()一个字符串

我的目标只是从这部分获取日期并将其与系统日期和我使用的系统日期进行比较:-

void FileLogger::date()
{

SYSTEMTIME time;//variable time to get the system time
GetLocalTime(&time);//reference to the timek
int hour = time.wHour;
if (hour > 12) hour -= 12;
int year = time.wYear;
int month = time.wMonth;
int day = time.wDay;
//not returning anything just storing values of day ,month
//& year

}

现在我需要对两个日期进行黑白比较,如果 .txt 中的日期小于今天的日期,则会创建一个新文件

请帮助大家,我知道这对大师来说很简单,但对于像我这样的初学者来说,这会造成麻烦,请以一些代码的形式提供帮助,以便我理解它

【问题讨论】:

  • 我会将日期保留为 ISO 格式 2012-03-26,因为它们与字符串相当。
  • 没关系,之前提出的问题正好相反。
  • 大卫 D:是的,大卫我坚持这个超过 3 天可能是我不是大师,欢迎任何建议我希望人们引导我正确的方向
  • 博人:嗯,我使用了一个字符串流使它看起来像一个iso,现在我的问题是我如何只得到我正在搜索的子字符串函数的那部分,但在实现它时仍然不成功

标签: c++ datetime-format


【解决方案1】:

如果您将行作为字符串,并且您确定格式,则 最简单的解决方案是:

std::string dateString(
    line.begin(), std::find( line.begin(), line.end(), 'T' ) );

(我仍然会做一些额外的检查;例如,dateString 正是 10个字符,只包含数字或'-'等)

这是 ISO 日期格式;它专门设计用于支持 直接作为字符串进行比较,因此您可能需要考虑获取 系统日期也是 ISO 格式的字符串。 (这很容易 如果您使用标准函数timelocaltimestrftime。)

【讨论】:

  • 致詹姆斯:-感谢詹姆斯给出答案实际上我有一个字符串_LastMessage
  • 致 James:-感谢 james 给出答案,实际上我有一个字符串 _LastMessage,getdatetime 函数被用作:-_lastMessage=getdatetime()+"debug"...;类似这样的我实际上有系统日期,如上所示为字符串日期;现在我对将要进行的比较感到困惑,我是否需要比较类似 if(datestream
  • 我不太清楚你想做什么。如果您有带有系统时间的time_t,则使用localtimestrftime 将允许您根据需要对其进行格式化。如果您有两个带有 ISO 日期的字符串,那么简单的字符串比较(字符串上的“'-' 是否存在)是相同;您不必将字符串转换为其他任何内容。
  • 致詹姆斯:- 我的目标是将最后记录的日期与当前日期进行比较,如果最后一个日志日期小于当前日期,我将关闭现有日志文件并创建一个新日志文件....所以我正在比较最后记录日期的两个日期(因为我没有得到任何关于如何获取修改日期:这是文件一旦创建后的属性)所以我认为最好打开该文件,下面是我使用字符串 dateString 的代码; ifstream 文件; file.open("C:/repos/trunk/logging/text.txt");在此之后,上面引用的声明
  • cont..so 基本上我正在打开文件,我将字符串作为日期、时间 .... 并尝试将该日期与系统的日期进行比较,我知道这不是正确的方法 1 可以修改文件的内容,但是我看不到其他方法...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
相关资源
最近更新 更多