的真實字符串化根據:日期時間
http://search.cpan.org/~drolsky/DateTime-1.43/lib/DateTime.pm#Formatters_And_Stringification
下面的工作:
use DateTime;
$dt = DateTime->new(...);
print $dt; # as string
和它的作用。
然而,使用JSON模塊嵌入所創建的$ dt的字符串作爲JSON編碼的數據結構如下時:
use JSON;
my $json = JSON::encode_json({ dt => $dt });
的JSON模塊被拋出以下異常:
encountered object '2017-08-02', but neither allow_blessed nor convert_blessed settings are enabled at ...
我可以解決這個問題如下:
my $json = JSON::encode_json({ dt => substr($dt,0) });
但不知道是否有交流更精簡的方式從DateTime中獲得「真正的」字符串?
我已經查看了DateTime文檔,但沒有看到明確的stringify()來創建JSON所需的真正的字符串。
編輯:在構造函數中,我通過'formatter'指定了所需的輸出格式。我想使用已經指定的格式獲得一個字符串,而不是再次指定格式(這將違背DRY原則......)
EDIT2:插入字符串是一個很好的解決方案,如果只是$ dt,但如果$ dt實際上是駝鹿屬性(即「$ person-> birth_d」),則不起作用。
...無法通過包 「日期時間」 找到對象的方法 「字符串」 – yahermann
是啊,我記錯了。 (未記錄的內部)方法實際上被命名爲'_stringify',但我不會使用它。已經修復。 – ikegami
唉,我希望能在某個地方真正紮根,但我會接受這個答案。我還添加了一個stringify()作爲模塊維護者的建議:https://github.com/houseabsolute/DateTime.pm/issues/58 – yahermann