- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
示例字符串:
2018-10-31T14:45:21.778952-07:00
我想将它转换为 int64_t 代表自纪元以来的毫秒(甚至微秒)。时区可能会有所不同。代码将在 linux 机器上执行,但我只能访问 std 和 folly(不能使用任何任意 3P 库)。
我搜索了这个并发现了一些对我不起作用的不同方法:
有什么简单的方法可以做到这一点吗?
最佳答案
来自上面的评论:
I am looking into using Howard's library. However, that it makes a web call gives me pause. I assume that if the call fails it will just use the locally stored timezone name data? We won't be dealing with timezone names, so I don't care about those. However, making a network call might be an issue.
A foundational layer不需要 IANA 时区数据库,因此永远不会进行网络调用。这是一个单一的头文件,只有头文件的库。
A time zone layer了解 IANA 时区数据库。该层可以配置为是否进行网络调用(取决于构建标志),甚至可以使用操作系统的时区数据库(Windows 除外)。
您的应用程序不需要 time zone layer因为它只处理 UTC 偏移量,而不处理时区名称或规则。
这是一个转换 std::string
的函数将您的示例格式转换为 std::chrono::time_point<std::chrono::system_clock, std::chrono::microseconds>
.对于 system_clock::time_point
来说,这种类型太冗长了。除了保证有 microseconds
精确。 foundational layer这种类型有一个类型别名 date::sys_time<std::chrono::microseconds>
.
#include "date/date.h"
#include <chrono>
#include <iostream>
#include <sstream>
auto
to_sys_time(std::string s)
{
using namespace date;
using namespace std;
using namespace std::chrono;
istringstream in{move(s)};
in.exceptions(ios::failbit);
sys_time<microseconds> tp;
in >> parse("%FT%T%z", tp);
return tp;
}
string
进入istringstream
.istringstream
在无法解析某些内容时抛出异常(您可以选择以不同方式处理错误)。time_point
具有所需的精度。你可以像这样练习这个函数:
int
main()
{
auto tp = to_sys_time("2018-10-31T14:45:21.778952-07:00");
using date::operator<<;
std::cout << tp << " UTC\n";
std::cout << tp.time_since_epoch() << '\n';
}
to_sys_time
使用所需的输入字符串。namespace date
中制作流媒体运营商可用。time_point
(这是一个 UTC time_point
)。duration
的 time_point
.这个程序的输出是:
2018-10-31 21:45:21.778952 UTC
1541022321778952µs
此程序将通过删除 #include "date/date.h"
移植到 C++20 , using namespace date;
和 using date::operator<<;
.
关于c++ - 将 ISO8601 字符串转换为自纪元以来的毫秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53289574/
我将时间存储在 64 位整数中,格式为 20110103101419(即表示 2011-01-03 10:14:19)。如何将其转换为自 1970 年以来的秒数? 最佳答案 我的 C 有点生疏,但看看
我正在生成一个包含过去二十四小时事件 gnuplot 的图表,但时间轴看起来非常糟糕,因为它试图在最后一天每五分钟拟合一次长数字。 gnuplot 有什么方法可以将 x 轴视为纪元时间,并每隔一小时左
我当前正在使用 django 并输出 unix 纪元的日期(以秒为单位)。如何在 unix epoch 中使用 jquery time ago ? 我看到这个例子:2015 年 1 月 10 日 Ja
我在 Google Apps 脚本中将字符串转换为日期对象时遇到一些问题。 我的日期采用以下格式,来自第三方 API: 2013-01-17T17:34:50.507 我正在尝试将其转换为日期对象:
我使用一个库,该库使用以下结构来定义开始时间戳,如下所示。 struct SYSTEMTIME { /** year */ WORD year; /** month *
使用 perl,我试图估计自文件创建以来的时间。我想将本地时间转换为 unix 时间(纪元),然后取文件的 unix 时间并减去。 我面临的问题是,当我将 localtime 转换为 unixtime
我正在使用具有以下响应的 API: { dt: 1474664400, temp: { day: 51.93, min: 46.62, max: 53.53, nigh
我正在从 API 获取估计公交车到达时间的时间戳作为时间戳/纪元:1536589019000。如果我访问类似 this 的网站我得到了适当的格式: 2018 年 9 月 10 日星期一上午 7:16:
我使用的 API 将时间返回为 Unix 时间 (1424952512) 到目前为止,我可以使用将 unix 时间转换为 NSDate func timeStamp(unixTime: Double)
@Data public class SampleDate { private Date revisiondate; } @RequestMapping("/date") public Resp
我在论坛中搜索了我的问题,但一无所获。 :(这个日期时间转换让我发疯。 我尝试将毫秒纪元转换为日期时间。我在互联网上找到了这个方法: private DateTime TimeFromUnix
我有一个 dateTime 变量,我想将它转换为纪元的十进制值。 如何才能做到这一点? 我尝试使用: seconds-from-duration($time, xs:dateTime('1970-01
如何获取纪元中的当前日期值,即自 1970-1-1 以来经过的天数。我需要 unix shell 脚本中的解决方案。 最佳答案 Unix Date 命令将以纪元时间显示 命令是 date +"%s"
这个问题在这里已经有了答案: Convert from date to epoch-Oracle (3 个答案) 关闭 9 个月前。 在使用 Oracle SQL 获取 unix 纪元时间戳方面,有
你能解释一下下面这句话吗,这让我很困惑。1.迭代2.梯度下降步骤3.纪元4.批量大小。 最佳答案 在神经网络术语中: 一个epoch = 所有训练样本的一次前向传递和一次反向传递 批量大小 = 一次前
我在 PostgreSQL 中有一个字符串 "2016-10-25T00:14:30.000"。 我想将时间戳转换为整数,例如:1477354441 我想为该值添加自定义分钟数,例如147735444
我想从 Postgres 获取数据。有一个类型为 timestamp without timezone 的列。简单的 SELECT 返回我格式化的日期,但我只想要以毫秒为单位的时间戳。我如何在 SQL
我的文件包含格式为“[dd.mm.yyyy.] 文本值”的多行。我需要将其转换为“Unix 纪元 | 文本值”。我尝试使用 awk 来执行此操作,但似乎找不到正确的命令例如,如果文件是: [30.08
我的一个表中的一列是 DATE,目前它会自动填充该行创建时间的时间戳。时间戳看起来像 2013-02-10 19:56:12。无论如何,我可以自动使用 unix 纪元为其添加时间戳吗?我希望这是有道理
我需要将时区感知 date_range (TimeStamps) 转换为 UNIX 纪元值,以便在外部 Javascript 库中使用。 我的做法是: # Create localized test
我是一名优秀的程序员,十分优秀!