如何将带有 T 的字符串转换为特定的时区?

所罗门·克罗森

因此,如果我有一个像这样的字符串:'2017-12-01T16:03:00' 并且需要将此字符串转换为 的时区America/New_York,如何转换此字符串?不完全确定T字符串中正在做什么以及它的确切用途。

我很好奇正确的方法,虽然我相信T这里很重要,但我理解它的目的。到目前为止我在这里尝试过的:

$string = '2017-12-01T16:03:00';
$time_fix = explode('T', $string);

if (count($time_fix) > 1)
{
    $data_date = DateTime::createFromFormat('Y-m-d H:i:s', $time_fix[0] . ' ' . $time_fix[1]);
    $output = $data_date->format('Y-m-d H:i:s', new DateTimeZone('America/New_York'));
} else {
    $data_date = DateTime::createFromFormat('Y-m-d H:i:s', $time_fix[0] . ' 00:00:00');
    $output = $data_date->format('Y-m-d H:i:s', new DateTimeZone('America/New_York'));
}

不确定这是否正在转换时区,所以想知道您对此有何想法?请问$output变量包含的日期和时间America/New_York时区?对此进行测试非常困难,因为我不知道创建时间字符串时当前所在的时区。

另外,想知道这里的 T 是否重要以及它的含义。以及如何针对America/New_York时区正确执行此操作

更新

显然,我发现通过 API 创建这些日期字符串的服务器时区已经在东部标准时间。但如果我不知道这一点,它将如何转换为 UTC?API 的开发人员声明它是 8601 格式的 UTC,但时区是 EST。这对我来说没有意义。因为,我相信 EST 是 UTC-5,而不仅仅是 UTC。我到底应该怎么从 API 处理不当的 UTC 时区字符串结果中知道这一点?我是否正确地指出这2017-12-01T16:03:00不是 UTC 时区中 EST 时区的正确字符串?

丁奇利夫

如果你这样做:

$date = new DateTime($info['CreateDate']); 
$date->setTimeZone(new DateTimeZone('UTC')); 
$date->setTimeZone(new DateTimeZone('America/New_York')); 
$output = $date->format('Y-m-d H:i:s');

您首先在默认时区中创建 DateTime 对象,这将影响时间戳计算,然后更改时区。相反,假设 UTC 输入,你应该这样做:

$date = new DateTime($info['CreateDate'], new DateTimeZone('UTC')); 
$date->setTimeZone(new DateTimeZone('America/New_York')); 
$output = $date->format('Y-m-d H:i:s');

这样 DateTime 对象会将输入日期解释为 UTC 时间并正确计算时间戳。然后设置时区只是为了获取正确的日期字符串,它不会影响底层时间戳。

我注意到 ISO 8601 日期字符串可以指定 UTC 偏移量,因此在这种特殊情况下,您可能会在没有指定它的情况下逃脱,因为没有给出偏移量。如果您的默认时区是 UTC,这在这种情况下也没有区别。

根据新数据编辑:

如果您知道输入位于东部标准时区,请尝试更改构造 DateTime 对象的行。

$date = new DateTime($info['CreateDate'], new DateTimeZone('EST')); 
$date->setTimeZone(new DateTimeZone('America/New_York')); 
$output = $date->format('Y-m-d H:i:s'); 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

T-SQL:如何将带有连接字符串的列分成多行?

来自分类Dev

如何将带有时区字符串的字符串转换为日期时间?

来自分类Dev

如何将带有时区的奇怪日期时间字符串转换为时间戳(PySpark)

来自分类Dev

如何将带有Unicode字符的字符串转换为普通字符串?

来自分类Dev

R-将带有“ \ t”和“ \ n”的字符串变量转换为数据帧

来自分类Dev

如何将带有字符代码的字符串转换为带引号的形式

来自分类Dev

如何将带有转义字符的 ascii 字符串转换为其等效的 unicode

来自分类Dev

如何将带有“ \ r \ n”的字符串转换为列表?

来自分类Dev

Java:如何将带有月份名称的字符串转换为DateTime?

来自分类Dev

如何将带有函数的字符串转换为Python中的可执行代码?

来自分类Dev

如何将带有数字的字符串转换为数组?

来自分类Dev

如何将带有对象和数组索引的字符串转换为json

来自分类Dev

如何将带有“ \ r \ n”的字符串转换为列表?

来自分类Dev

如何将带有“ []”的字符串转换为整数数组

来自分类Dev

如何将带有字符串的嵌套数组转换为 JavaScript 中的数字?

来自分类Dev

如何将带有 $ sing 的字符串转换为 int

来自分类Dev

如何将带有括号命名的属性的JSON字符串转换为Typescript

来自分类Dev

如何将带逗号的字符串转换为带有标签的字符串-ES6

来自分类Dev

如何将带有数组的字符串变量转换为带有数组的整数变量

来自分类Dev

如何将日期字符串从UTC转换为HIVE中的特定时区?

来自分类Dev

如何将日期字符串转换为时区特定日期?

来自分类Dev

如何将带有JSON字符串的Pandas DataFrame转换为有效JSON?

来自分类Dev

如何将字符串转换为特定时区的DateTime,并准确保留该时区的日期?

来自分类Dev

将带时区的字符串转换为日期

来自分类Dev

如何将带有法语重音符号的字符串转换为URL(替换重音字母)?

来自分类Dev

如何将带有逗号的数字字符串转换为整数并将其相加?

来自分类Dev

如何将带有尾随 x 的数字字符串转换为无符号数字列表

来自分类Dev

如何在Oracle中将带有某些服务符号的字符串转换为带有时区的时间戳?

来自分类Dev

如何将带有时区的时间转换为时间戳?

Related 相关文章

  1. 1

    T-SQL:如何将带有连接字符串的列分成多行?

  2. 2

    如何将带有时区字符串的字符串转换为日期时间?

  3. 3

    如何将带有时区的奇怪日期时间字符串转换为时间戳(PySpark)

  4. 4

    如何将带有Unicode字符的字符串转换为普通字符串?

  5. 5

    R-将带有“ \ t”和“ \ n”的字符串变量转换为数据帧

  6. 6

    如何将带有字符代码的字符串转换为带引号的形式

  7. 7

    如何将带有转义字符的 ascii 字符串转换为其等效的 unicode

  8. 8

    如何将带有“ \ r \ n”的字符串转换为列表?

  9. 9

    Java:如何将带有月份名称的字符串转换为DateTime?

  10. 10

    如何将带有函数的字符串转换为Python中的可执行代码?

  11. 11

    如何将带有数字的字符串转换为数组?

  12. 12

    如何将带有对象和数组索引的字符串转换为json

  13. 13

    如何将带有“ \ r \ n”的字符串转换为列表?

  14. 14

    如何将带有“ []”的字符串转换为整数数组

  15. 15

    如何将带有字符串的嵌套数组转换为 JavaScript 中的数字?

  16. 16

    如何将带有 $ sing 的字符串转换为 int

  17. 17

    如何将带有括号命名的属性的JSON字符串转换为Typescript

  18. 18

    如何将带逗号的字符串转换为带有标签的字符串-ES6

  19. 19

    如何将带有数组的字符串变量转换为带有数组的整数变量

  20. 20

    如何将日期字符串从UTC转换为HIVE中的特定时区?

  21. 21

    如何将日期字符串转换为时区特定日期?

  22. 22

    如何将带有JSON字符串的Pandas DataFrame转换为有效JSON?

  23. 23

    如何将字符串转换为特定时区的DateTime,并准确保留该时区的日期?

  24. 24

    将带时区的字符串转换为日期

  25. 25

    如何将带有法语重音符号的字符串转换为URL(替换重音字母)?

  26. 26

    如何将带有逗号的数字字符串转换为整数并将其相加?

  27. 27

    如何将带有尾随 x 的数字字符串转换为无符号数字列表

  28. 28

    如何在Oracle中将带有某些服务符号的字符串转换为带有时区的时间戳?

  29. 29

    如何将带有时区的时间转换为时间戳?

热门标签

归档