假设我有两个日志文件(input.log和output.log),格式如下:
2012-01-16T12:00:00 12345678
Run Code Online (Sandbox Code Playgroud)
第一个字段是处理时间戳,第二个字段是唯一 ID。我试图找到:
input.log没有该 ID 对应记录的记录output.loginput.log具有该ID的记录,但在时间戳的差超过5秒我有一个MySQL的变通解决方案,但我希望删除数据库组件并使用 shell 脚本处理它。
我有以下内容,input.log如果output.log包含 ID ,则返回带有添加列的行:
join -a1 -j2 -o 0 1.1 2.1 <(sort -k2,2 input.log) <(sort -k2,2 output.log)
Run Code Online (Sandbox Code Playgroud)
示例输出:
10111 2012-01-16T10:00:00 2012-01-16T10:00:04
11562 2012-01-16T11:00:00 2012-01-16T11:00:10
97554 2012-01-16T09:00:00
Run Code Online (Sandbox Code Playgroud)
主要问题:
既然我有了这些信息,我该如何计算两个时间戳之间的差异并丢弃相隔超过 5 秒的时间戳?我在处理 ISO 8601 时间戳时遇到了一些问题date(特别是T),并假设必须有更好的方法。
次要问题:
有没有办法重新设计整个方法,例如变成单个awk脚本?我处理多个文件和为输出条件设置正确不等式的知识是这里的限制因素,因此是上述方法。
我正在寻找在任何浏览器中使用相同时间在国际上预订服务的最佳实践/解决方案。我不太明白逻辑(也在这里挖掘)。
用例
基本上,所有角色都必须在本地时间看到“理发店”,无论他们在哪个 TZ,并在“商店”时间向服务器报告。
服务器时间为 UTC,时间戳以 unix 秒为单位。“店”TZ是众所周知的。
问题是我使用了几个 jquery 插件(datetimepicker 和日历),它们在内部利用浏览器本地时间,并且有几千行代码需要分析和修复,使其不太受支持 - (布鲁塞尔 | 任何其他 TZ 中的浏览器)每个“新日期()”将获得本地浏览器时间。也有一些狭窄的地方(因为这些假想的“理发店”位于世界各地并且是从地图中挑选出来的,所以目标 TZ 是动态的)。
通常的做法是什么?
是不是更容易
非常感谢
PS 我已经阅读了最佳实践- 但正如我所说,我一定会使用特定的插件。
解决方案:
我意识到我不需要这些日期时间的相对值,因为我从不需要在时间上比较不同“理发店”的书籍(每个“商店”都有纬度/经度,如果需要,我仍然可以重新计算相对时间)。
基本上,无论时区如何,我都只需要绝对UTC 值,在这种情况下,unix 时间(自 1970 年 UTC 以来的秒数)非常适合。
现在我没有在客户端通过用户浏览器偏移量更正时间,将其发送到后端,并通过目标偏移量将其固定在那里,而是在客户端和服务器/数据库端以明确的 UTC 日期运行整个系统,存储和显示所有角色,只有日期/时间过滤器除外,它们绑定到本地浏览器时钟并且不存储在任何地方。
好吧,似乎有很多类似的问题,但我找不到可以回答这个特定问题的问题..所以这里是..
有一个可用的 Kendo UI 网格。我的数据源正在返回一个时间戳 - 这是返回到代码的 JSON 响应:

您会注意到下一行也是一个日期.. 由 MySQL 作为标准 DateTime 格式返回 - 我很乐意直接使用它。但我已将日期转换为我认为更通用的时间戳。(??)
现在我需要做两件事 - 将时间戳格式化为可读日期并编辑日期,以便将其保存回数据源。但让我们先解决格式问题。
我当前显示列的代码如下所示:
{ title: "Trial<br>Date",
field: "customer_master_converted_to_customer_date",
format: "{0:d/M/yyyy}",
attributes: {
style: "text-align: center; font-size: 14px;"
},
filterable: true,
headerAttributes: {
style: "font-weight: bold; font-size: 14px;"
}
},
Run Code Online (Sandbox Code Playgroud)
虽然我试过了..
toString(customer_master_converted_to_customer_date, "MM/dd/yyyy")
Run Code Online (Sandbox Code Playgroud)
.. 以及它的几种变体 - 在格式字符串方面。是的,我试过输入:
type: "date",
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都只得到时间戳。

任何人?
我想将微秒分辨率的日期时间保存为时间戳。但似乎 Python 3 日期时间模块在加载它们时丢失了一微秒。为了测试这一点,让我们创建一个脚本:
test_datetime.py:
from random import randint
from datetime import datetime
now = datetime.now()
for n in range(1000):
d = datetime(year=now.year, month=now.month, day=now.day,
hour=now.hour, minute=now.minute, second=now.second,
microsecond=randint(0,999999))
ts = d.timestamp()
d2 = datetime.fromtimestamp(ts)
assert d == d2, 'failed in pass {}: {} != {}'.format(n, d, d2)
Run Code Online (Sandbox Code Playgroud)
python3 test_datetime.py总是会失败一微秒:
Traceback (most recent call last):
File "test_datetime.py", line 14, in <module>
assert d == d2, 'failed in pass {}: {} != {}'.format(n, d, d2)
AssertionError: failed in pass …Run Code Online (Sandbox Code Playgroud) 我正在使用 org.joda.time.LocalDate 和 LocalDateTime。我从外部来源获得了一个 Unix 时间戳,并希望从中生成一个 LocalDate(Time)。关键是,它在该外部系统的界面中定义,所有日期/时间都在 UTC 时区。所以我想避免从该时间戳到本地系统的任何默认时区的任何隐式转换,这可能与 UTC 不同。对于此类事情,有一个 LocalDateTime 的构造函数,所以我尝试了(例如):
System.out.println(new LocalDateTime(3600000L));
--> 1970-01-01T02:00:00.000
System.out.println(new LocalDateTime(3600000L, DateTimeZone.UTC));
--> 1970-01-01T01:00:00.000
Run Code Online (Sandbox Code Playgroud)
结果有点出乎我的意料。查看 JavaDoc,第一个构造函数评估时间戳“在默认区域中使用 ISO 年表”。根据定义,Unix 时间戳是从 01-JAN-1970T00:00:00UTC 开始的秒数(这里是毫秒)!因此,如果将值 3600000(= 恰好 2 小时(以毫秒为单位)添加到该基数中,它将变为 01-JAN-1970T02:00:00UTC。我的本地系统设置为欧洲/柏林 (CET) 时区,即 UTC+1。准确地说,我们现在有夏令时,所以它甚至应该是 UTC+2,但让我们假设我们现在处于 UTC+1。因此,如果时间戳根据定义是 UTC,那么我希望结果时间是 01:00:00,如果它将时间戳的值解释为转换为 UTC 的 CET,或者 03:00:00 如果它正确地期望时间戳具有转换为 CET 的 UTC 值。但它实际上显示了一个未转换的时间戳,正好偏离基地 2 小时。第二个构造函数应该评估“在指定区域中使用 ISO 年表”的时间戳。(来自 JavaDoc)因此,如果我明确指定 UTC 时区,我根本不会期望任何转换,而是 02:00:00 的时间。一个基于 UTC 的时间戳会导致一个本身被声明为 UTC 的时间,结果应该是这样,但结果是 01:00:00!只是为了仔细检查,我用 CET 显式调用它并得到相同的结果,就好像我不提供任何时区一样。(来自 JavaDoc)因此,如果我明确指定 UTC 时区,我根本不会期望任何转换,而是 02:00:00 的时间。一个基于 UTC 的时间戳会导致一个本身被声明为 UTC 的时间,结果应该是这样,但结果是 01:00:00!只是为了仔细检查,我用 CET 显式调用它并得到相同的结果,就好像我不提供任何时区一样。(来自 JavaDoc)因此,如果我明确指定 UTC …
我在 java 和 javascript 之间的时间戳有问题。
我已经找到了关于时间戳的这两个问题,并且我知道这些年来的时间变化。
旧日期的时间戳偏差 Java 与 Javascript(3600 秒)
基本上在 1927 年底的午夜,时钟倒退了 5 分 52 秒。因此,“1927-12-31 23:54:08”实际上发生了两次,看起来 Java 正在将其解析为该本地日期/时间的较晚可能时刻。
问题在于,当我使用 javascript 并将时间戳放在那里时,我会得到一个不同于 Java 日期的日期。我需要这个来在网页上显示正确的日期。我知道我可以将日期作为字符串请求,但我更喜欢使用时间戳。
Java 日期 0001-01-01 时间戳是 -62135773200000
JavaScript 日期 0001-01-01 时间戳是 -62135596800000
差值为-176400000;49 小时。
有谁知道我可以为此做些什么。
我正在从数据库中提取时间戳,它使用 RFC3339 格式,但缺少时区。因此,当我尝试比较时间戳时,它会关闭。如何将 dbtime 更改为东部时间?
// time format
const
(
RFC3339 = "2006-01-02T15:04:05Z07:00"
)
//now time
now := time.Now()
nowtime := now.Unix()
fmt.Println("Nowtime:", nowtime)
fmt.Println("Now:", now)
//time in db
fmt.Println("Dbtime string:", dbtime)
udbtime, err := time.Parse.EST(RFC3339,dbtime)
fmt.Println("RFC3339: " + RFC3339)
fmt.Println("dbtime parsed", udbtime)
fmt.Println("dbtime parsed unixtime", udbtime.Unix())
Run Code Online (Sandbox Code Playgroud)
我的输出是
Nowtime: 1466443640
Now: 2016-06-20 13:27:20.963232824 -0400 EDT
Dbtime string: 2016-06-20T12:41:45.14Z
RFC3339: 2006-01-02T15:04:05Z07:00
dbtime parsed 2016-06-20 12:41:45.14 +0000 UTC
dbtime parsed unixtime 1466426505
Run Code Online (Sandbox Code Playgroud) 在 ARKit 中,ARFrame.timestampTimeInterval的值如下
185726.884258291
185726.91759425
185726.950930291
...
Run Code Online (Sandbox Code Playgroud)
我想从这些值中获取 unix 时间戳,但它们看起来并不熟悉。这些数字代表什么?
我正在查找时间标准的名称,以自 UTC 1970 年 1 月 1 日午夜以来的毫秒数表示。我们可以用 Java 进行调用System.currentTimeMillis()。例如,当我们谈论以秒表示的同一时间时,我们使用术语Unix time。如果您在答案中提供标准的链接,那就太好了。
我的数据帧时间戳中有一列中有一个列,其中包含 UNIX 13 位时间戳,如下所示:
| 时间戳| | ------------- | | 1584528257638 | | 1586618807677 | | 1585923477767 | | 1583314882085 |
使用 pandas 可以很容易地将其转换为:
ms = pd.to_datetime(df[column], unit='ms')
df[column] = ms
Run Code Online (Sandbox Code Playgroud)
然而,在 pySpark 中,这并不那么容易,我发现了其他一些内容,例如这篇文章试图实现这个目标。最后毫秒的串联对我不起作用,它总是导致第二个时间戳 (HH:mm:ss) 而不是 HH:mm:ss.SSS。
到目前为止我尝试过的是:
df = df.withColumn("unix_timestamp", F.unix_timestamp(df.timestamp,'yyyy-MM-dd HH:mm:ss.SSS z') + F.substring(df.timestamp, -3,3).cast('float')/1000)
df = df.withColumn("ms_Timestamp", F.to_timestamp(df["unix_timestamp"]))
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有将其转换为毫秒时间戳,我不知道还能做什么。
我将不胜感激最终获得毫秒时间戳的任何帮助。
祝一切顺利,并提前致谢。
unix-timestamp ×10
date ×4
datetime ×3
java ×3
timestamp ×3
python ×2
arkit ×1
awk ×1
bash ×1
dataframe ×1
epoch ×1
go ×1
ios ×1
iso8601 ×1
javascript ×1
jodatime ×1
jquery ×1
kendo-grid ×1
kendo-ui ×1
milliseconds ×1
parsing ×1
pyspark ×1
python-3.4 ×1
python-3.x ×1
rfc3339 ×1
time ×1
timezone ×1