perl - Perl 将 UTC MySQL 日期时间格式化为 GMT/BST 伦敦/欧洲字符串
问题描述
我将 DateTime 格式化为2019-01-01 01:02:03
从 MySQL 数据库返回。我想将其转换为Europe/London
并输出格式为:
2019-01-01 01:02:03 GMT (UTC +00:00)
这也应该能够处理 BST DateTimes,例如:
2019-07-01 01:02:03
UTC 将输出2019-07-01 02:02:03 BST (UTC +01:00)
我试过查看这个问题和答案,但不知道如何在提供的 DateTime 字符串上应用该语言环境转换而不是now
?
这是我需要的伪代码等价物,请原谅我可怕的 Perl...
use DateTime;
my $my_utc_date_time = "2019-01-01 01:02:03";
# this needs to use $my_utc_date_time not now
my $start_date = DateTime->now->set_time_zone("Europe/London")->iso8601;
my $start_date_formatted = strftime("%Y-%m-%d %H:%M:%S %Z (UTC +00:00)", $start_date);
解决方案
use strict;
use warnings;
use DateTime;
use DateTime::Format::Strptime;
my $my_utc_date_time = "2019-07-01 01:02:03";
my $datetime_parser = DateTime::Format::Strptime->new(pattern => '%F %T',
locale => 'en_GB',
time_zone => 'UTC');
my $datetime = $datetime_parser->parse_datetime($my_utc_date_time);
print $datetime->strftime('%FT%T %Z (UTC %z)'), "\n";
my $local_datetime = $datetime->set_time_zone('Europe/London');
print $local_datetime->strftime('%FT%T %Z (UTC %z)'), "\n";
输出:
2019-07-01T01:02:03 UTC (UTC +0000)
2019-07-01T02:02:03 BST (UTC +0100)
推荐阅读
- netlogo - 如何将使用“values-from”语法的代码重写为使用“of”语法的代码
- android - 如何确定Android视图百分比可见区域何时发生变化?
- netbeans - 将 derby.jar 数据库添加到 jdk 1.8.0_191
- javascript - 以编程方式从数据对象创建变量
- python - 如何在 Keras 模型中停用使用 training=True 调用的 dropout 层?
- windows - 使用设备句柄确定 ReadFile/WriteFile 允许的最大 IO 大小?
- verilog - 如何在系统 verilog 中驱动来自 2 个源的信号
- javascript - Problem with .env file being read in javascript project
- node.js - 在 firebase 函数中以特定顺序执行 axios / firebase 承诺的正确方法是什么?
- c# - UnityAction 丢失订阅事件