亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php IntlDateFormatter 無法按預期工作

php IntlDateFormatter 無法按預期工作

PHP
qq_遁去的一_1 2021-11-26 19:18:58
代碼很簡單,我想使用 IntlDateFormatter 將字符串轉換為 DateTime 對象,但是結果與原始結果完全不同。我做錯了什么?以下代碼是基于構造DateTimeToLocalizedStringTransformer的Symfony4.3<?php//turn string to timestamp$t = new \IntlDateFormatter('en_US', 2, 2, new DateTimeZone('Asia/Shanghai') , 1, 'Y-m-d H:i:s');$t->setLenient(false);$timestamp = $t->parse('2019-09-18 18:58:08');//turn timestamp back to string$date = new DateTime();$date->setTimestamp($timestamp);$date->setTimezone(new \DateTimeZone('Asia/Shanghai'));echo $date->format('Y-m-d H:i:s') . "\n"; //output : 2019-01-18 18:09:00, why? 
查看完整描述

2 回答

?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

IntlDateFormatter 的日期格式錯誤,您需要ICU 格式。


最好使用常量而不是整數。


$dateStr = '2019-09-18 18:58:08';

$t = new \IntlDateFormatter('en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Shanghai' ,IntlDateFormatter::GREGORIAN, 'yyyy-MM-dd HH:mm:ss'); 

$t->setLenient(false);

$timestamp = $t->parse($dateStr);


//turn timestamp back to string

$dateStrFromTs = date_create(null,new \DateTimeZone('Asia/Shanghai'))

  ->setTimestamp($timestamp)

  ->format('Y-m-d H:i:s')

;


var_dump($dateStrFromTs === $dateStr);  //bool(true)


查看完整回答
反對 回復 2021-11-26
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

首先,讓我們擺脫幻數和間接檢查,以確保:


$t = new \IntlDateFormatter(

    'en_US',

    IntlDateFormatter::MEDIUM,

    IntlDateFormatter::MEDIUM,

    new DateTimeZone('Asia/Shanghai'),

    IntlDateFormatter::GREGORIAN,

    'Y-m-d H:i:s');

$t->setLenient(false);

$timestamp = $t->parse('2019-09-18 18:58:08');

var_dump(date('r', $timestamp));

這打印 Fri, 18 Jan 2019 11:09:00 +0100. 那么,有什么關系呢?


問題是最后一個構造函數參數。您理所當然地認為格式代碼與 eg 中的相同,date()但這不是文檔所說的:

格式化或解析時使用的可選模式??赡艿哪J接涗浽?? http://userguide.icu-project.org/formatparse/datetime。

  • Y表示“一年中的一周”

  • m表示一小時內的分鐘。

... 等等。


查看完整回答
反對 回復 2021-11-26
  • 2 回答
  • 0 關注
  • 182 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號