c语言解析时间字符串,在C中解析日期/时间(任何格式字符串到Epoch)

我想您可以尝试使用这些格式将字符串转换为ptime,并选择那些不会导致not_a_date_time的字符串:

boost format flags与你的略有不同,我将为这个例子做最后五个:

#include

#include

using boost::posix_time::time_input_facet;

using std::locale;

const locale inputs[] = {

locale(locale::classic(), new time_input_facet("%m/%d/%Y")),

locale(locale::classic(), new time_input_facet("%Y-%m-%d %H:%M:%S")),

locale(locale::classic(), new time_input_facet("%Y%m%d%H%M%S")),

locale(locale::classic(), new time_input_facet("%Y%m%d%H%M")),

locale(locale::classic(), new time_input_facet("%Y%m%d")) };

const size_t formats = sizeof(inputs)/sizeof(inputs[0]);

time_t ptime_to_time_t(boost::posix_time::ptime t)

{

static boost::posix_time::ptime epoch(boost::gregorian::date(1970,1,1));

return (t-epoch).ticks() / boost::posix_time::time_duration::ticks_per_second();

}

int main()

{

std::string msg = "2010-08-04 08:34:12";

for(size_t i=0; i

{

std::istringstream ss(msg);

ss.imbue(inputs[i]);

boost::posix_time::ptime this_time;

ss >> this_time;

if(this_time != boost::posix_time::not_a_date_time)

std::cout << this_time << " or " << ptime_to_time_t(this_time) << std::endl;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值