【发布时间】:2019-01-07 11:16:09
【问题描述】:
如何根据当前时区将Poco::Timestamp 和Poco::DateTimeFormatter 打印到格式化的日期时间?
我有一个print_pretty_datetime(const Poco::Timestamp &now),在那里我会收到一个Poco::Timestamp,所以很遗憾我不能使用Poco::LocalDateTime。
MCVE:
#include "Poco/Timestamp.h"
#include "Poco/Timezone.h"
#include "Poco/DateTimeFormatter.h"
#include "Poco/DateTimeFormat.h"
#include <iostream>
#include <string>
// Cannot change the method signature. I will receive a Poco::Timestamp object
std::string print_pretty_datetime(const Poco::Timestamp &now)
{
return Poco::DateTimeFormatter::format(
now,
Poco::DateTimeFormat::SORTABLE_FORMAT,
Poco::Timezone::tzd()
);
}
int main()
{
Poco::Timestamp now;
std::string dt_now = print_pretty_datetime(now);
std::cout << dt_now << '\n';
return 0;
}
例如:返回的字符串是2019-01-07 11:10:12(因此是UTC+0),而我的设备在UTC+1。
其实date这个命令会返回Mon Jan 7 12.10.12 CET 2019。
Poco::DateTimeFormatter::format 中的 tzd 的正确参数是什么,用于根据当前语言环境打印日期时间?
系统信息:
SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
Poco 1.9.0
【问题讨论】:
标签: c++ datetime locale unix-timestamp poco-libraries