将 13 位小数转换为日期时间
Converting 13 decimals to datetime
我有一个关于GPS汽车的项目。我需要返回每辆车的起点和终点时刻。
所以我们有:
time_t x, y;因为我稍后会使用它们进行转换。
我有一个问题。我从以下格式的外部文件数据中读取:
auto1
1439467747492
auto1
1439467748512
。等。自动1->汽车名称;
1439467747492->汽车的时刻
我试图获得每辆车的第一个时刻和最后一个时刻的第一个位置。这是C++中的代码:
long test = momenti[choice1]/1000;
time_t x = test;
cout << " Momentul initial:n " << ctime(&x) << endl;
long test1 = momentf[choice1] / 1000;
time_t y = test1;
cout << " Momentul final:n " << ctime(&y) << endl;
我收到每辆车的相同日期。是像momenti[i]=momentf[i]
我做错了什么?
这不好。根据纪元转换器,我们应该得到这个: 格林威治标准时间: 星期四, 13 八月 2015 12:09:07 GMT
以下是使用 C++11/14 并使用这个免费的开源日期库来获取此输出的方法,该库扩展了C++ <chrono>
库来处理日期。
#include "date.h"
#include <chrono>
#include <iostream>
int
main()
{
using namespace std::chrono;
using namespace std;
using namespace date;
using time_point = std::chrono::time_point<system_clock, milliseconds>;
auto tp = time_point{1439467747492ms};
auto dp = floor<days>(tp);
auto time = make_time(tp - dp);
auto ymd = year_month_day{dp};
cout << "GMT: " << weekday{dp} << ", " << ymd.day() << ' ' << ymd.month()
<< ' ' << ymd.year() << ' ' << time << " GMTn";
}
输出:
GMT: Thu, 13 Aug 2015 12:09:07.492 GMT
我为了好玩而投入了几秒钟,浪费它们似乎很可惜(C lib 不会给你)。 如果您真的不想要它们,很容易修复:
auto time = make_time(floor<seconds>(tp) - dp);
现在输出为:
GMT: Thu, 13 Aug 2015 12:09:07 GMT
对于上述1439467747492ms
,您需要 C++14。 如果你只有C++11,你可以在这个中订阅:milliseconds{1439467747492}
。 如果你只有C++03,那么你落后于时代13年,坚持ctime
.;-)
chrono
解决方案将为您提供更高的类型安全性、更大的灵活性和更高的性能。
如果我能解决并且纬度和经度问题会很棒,哈哈
如果您可以将纬度和经度转换为 IANA 时区名称(并且有一些工具可以做到这一点),我为您提供了一个 IANA 时区数据库解析器,它可以与<chrono>
和"date.h"
进行互操作。
#include <iostream>
#include <cstring>
#include <time.h>
using namespace std;
int main()
{
long test = 1439467747492;
time_t x = test;
cout << ctime( &x ) << endl;
return 0;
}
生产
Tue Sep 18 20:15:32 1990
相关文章:
- 使用 C++将时间戳转换为格式化的日期时间
- C++代码的 C# 日期时间等效项是什么?
- 如何在提升日期时间中创建日期范围?
- 在 c++ 中将 ISO 日期时间转换为本地日期时间并提取时间
- Rcpp/C++/R:比较日期时间矢量与日期时间时出错(错误:"运算符>"的不明确重载)
- 如何将毫秒的日期时间字符串转换为 UNIX 时间戳
- 扩展中的日期时间对象方法C++问题
- 将DateTime字符串分为C 的日期时间
- C++以微秒为单位解析日期/时间
- 仅将纪元字符串保存到 mysql 日期时间年/月/日,但没有小时分钟秒
- 使用提升解析日期时间字符串:采用个位数小时格式
- C++ Poco SQL 查询不返回具有'between'和'and'日期时间绑定的结果
- 快速将带有时区的日期时间字符串转换为 UNIX 时间戳(C++)
- 从C 的时间戳提取日期时间戳
- 标准::get_time 中的日期时间格式
- 生成包含分数和时区的完整 iso 日期时间表示字符串
- 通过 ODBC C++将带有日期时间的记录插入 SQL Server 2014 的问题
- 在 C++20 中获取当前日期/时间是否线程安全?
- mongocxx:插入日期时间
- Poco 日期时间格式化程序 - 使用当前时区打印时间戳