目标是从数据的日期时间中去除日期,以便可以使用 Chartkick 叠加多天。 Ruby 将逗号解释为字段之间的分隔符。 Rails 和 Chartkick 可能没有问题,因为它们是“timestamptz”数据类型。带有 PG 时区的时间戳。
day_one_array = [
[Thu, 28 Dec 2023 00:00:00.000000000 PST -08:00, 0.0],
[Thu, 28 Dec 2023 01:00:00.000000000 PST -08:00, 0.0],
<snip>
[Thu, 28 Dec 2023 21:00:00.000000000 PST -08:00, 0.0],
[Thu, 28 Dec 2023 22:00:00.000000000 PST -08:00, 0.0],
[Thu, 28 Dec 2023 23:00:00.000000000 PST -08:00, 0.0]]
puts day_one_array.each { |x| puts x }
parsing_daily_data.rb:2: syntax error, unexpected constant, expecting ']'
[Thu, 28 Dec 2023 00:00:00.000000000 PST ...
有关如何使用 Ruby 或更直接在 Rails 中处理此问题的任何建议。使用 timestampz 数据具有挑战性,因为数据会根据其查看方式而重新格式化。在 PGAdmin 中,相同的数据显示为
'2022-12-05 08:00:00-08'
。报价来来去去。尝试从时间戳到字符串来回转换非常具有挑战性。
尝试从时间戳到字符串来回转换是非常具有挑战性的
to_char()
与 格式掩码 出路,to_timestamp()
入路:
create table my_timestamptz (tstz timestamptz);
insert into my_timestamptz
select to_timestamp('Thu, 28 Dec 2023 00:00:00.000000000 PST -08:00, 0.0',
'Dy, DD Mon YYYY HH24:MI:SS.US AAA TZH:TZM, AAA')
returning *;
tstz |
---|
2023-12-28 08:00:00+00 |
set timezone='PST8PDT';
select to_char(tstz,
'Dy, DD Mon YYYY HH24:MI:SS.US TZ TZH:TZM, 0.0')
from my_timestamptz;
to_char |
---|
2023 年 12 月 28 日星期四 00:00:00.000000 PST -08:00, 0.0 |