We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KEEP导出的GPX数据时间为UTC时间,但是却多了毫秒小数点,导致GPX导入Starva时将时区识别错误,时间混乱。
<trkpt lat="32.1877403071313" lon="118.70919897992724"> <time>2022-10-25T23:18:10.175000Z</time> </trkpt>
将小数点后的数据去掉
echo -e "<time>2022-09-19T12:08:37.731000Z</time>" | sed -n 's/\.[[:digit:]]\{3\}0\{3\}Z/Z/ p'
#!/bin/bash ls *.gpx | xargs sed -i 's/\.[[:digit:]]\{3\}0\{3\}Z/Z/g'
同样存在时区问题的还有行者软件导出的GPX时间也是不规范的
行者软件导出的时间格式为UTC格式,但是其真实事件却是东八区时间,这就导致导入Strava时出现了时区错误的问题。需要对时间格式进行转换。
Strava认可的时区格式为+08:00
+08:00
比如:
行者软件导出的GPX如下:
<time>2022-10-17T07:14:49Z</time>
这是UTC格式,但其时间却是东八区时间 正确的格式应该如下,声明时区
<time>2022-10-17T07:14:49+08:00</time>
#!/bin/bash ls *.gpx | xargs sed -i 's/Z</+08:00</g'
按照GPX规范,GPX中的时间值如果没有指定时区,则默认应该按照UTC世界标准时间理解: 如:下面GPX四个时间串,表示的是一样的时间: 2015-05-19T20:31:37 : 没有指定时区,按照UTC时间理解(默认) 2015-05-19T20:31:37Z : 指定为UTC时间理解 2015-05-20T04:31:37+0800 : 指定了时区,即:北京时间,按照北京时间理解 2015-05-20T04:31:37+08:00 :同上 按照上面的逻辑,GPX中的时间就是一个唯一确定的时间时间,而不依赖与当时所处的时区。
GPX文件的时间格式遵守ISO-8601标准:
小时、分和秒都用2位数表示,对UTC时间最后加一个大写字母Z,其他时区用实际时间加时差表示。如UTC时间下午2点30分5秒表示为14:30:05Z或143005Z,当时的北京时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。
The text was updated successfully, but these errors were encountered:
Hi~ 感谢
有兴趣在代码里帮忙修复下么?我来合
Sorry, something went wrong.
这块有个有意思的可以分享下(在代码里你也能找到) 理论上有 gpx -> 坐标点 -> 就能利用坐标点发现时区,我在代码里是这么做的。
Hi~ 感谢 有兴趣在代码里帮忙修复下么?我来合
感谢这个有趣的项目,有时间写下代码提交~
好滴,感谢。理论上生成 gpx 那块 trim 一下最后的时间就行。
@toddlerya 参考资料非常好,学到了谢谢 但是,一个问题是很多 gpx 都没那么标准,所以大部分 gpx 读取的库都是认得
toddlerya
No branches or pull requests
问题描述
KEEP导出的GPX数据时间为UTC时间,但是却多了毫秒小数点,导致GPX导入Starva时将时区识别错误,时间混乱。
数据样本
修复方式
测试
将小数点后的数据去掉
批量修复脚本
引申问题
同样存在时区问题的还有行者软件导出的GPX时间也是不规范的
行者软件导出的时间格式为UTC格式,但是其真实事件却是东八区时间,这就导致导入Strava时出现了时区错误的问题。需要对时间格式进行转换。
Strava认可的时区格式为
+08:00
比如:
行者软件导出的GPX如下:
这是UTC格式,但其时间却是东八区时间
正确的格式应该如下,声明时区
行者GPX时区修复
参考资料
按照GPX规范,GPX中的时间值如果没有指定时区,则默认应该按照UTC世界标准时间理解:
如:下面GPX四个时间串,表示的是一样的时间:
2015-05-19T20:31:37 : 没有指定时区,按照UTC时间理解(默认)
2015-05-19T20:31:37Z : 指定为UTC时间理解
2015-05-20T04:31:37+0800 : 指定了时区,即:北京时间,按照北京时间理解
2015-05-20T04:31:37+08:00 :同上
按照上面的逻辑,GPX中的时间就是一个唯一确定的时间时间,而不依赖与当时所处的时区。
GPX文件的时间格式遵守ISO-8601标准:
小时、分和秒都用2位数表示,对UTC时间最后加一个大写字母Z,其他时区用实际时间加时差表示。如UTC时间下午2点30分5秒表示为14:30:05Z或143005Z,当时的北京时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。
The text was updated successfully, but these errors were encountered: