我有$date = $run['at'];
给了我 2013-06-03T16:52:24Z (来自JSON输入)。
要将其转换为例如“ d M Y,H:i ”我使用
$date = new DateTime($run['at']);
echo $date->format('d M Y, H:i');
问题是我需要意大利语的日期。支持set_locale
的唯一功能是strftime
。
如何用DateTime::format
(或替换,dunno)“包裹”strftime
?
答案 0 :(得分:15)
setlocale(LC_TIME, 'it_IT.UTF-8');
$date = new DateTime($run['at']);
strftime("%d %B", $date->getTimestamp())
......工作。 :)
答案 1 :(得分:0)
这就是我结合 DateTime 和 strftime()的功能解决的方法。
第一个允许我们管理具有奇怪日期格式的字符串,例如“ Ymd”。 第二种功能使我们可以用某种语言翻译日期字符串。
例如,我们从一个值“ 20201129”开始,并希望以意大利语可读的日期结尾,并以天和月的名称结尾,首字母大写:“ Domenica 29 novembre 2020”。
struct Response: Decodable {
let name: String
let addresses: [AddressType]
enum CodingKeys: String, CodingKey {
case name
case addresses
}
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
name = try container.decode(String.self, forKey: .name)
var unkeyedContainer = try container.nestedUnkeyedContainer(forKey: .addresses)
var addresses = [AddressType]()
while !unkeyedContainer.isAtEnd {
let addressTypes: [AddressType]
do {
addressTypes = try unkeyedContainer.decode([String: Address].self).map {
AddressType(label: $0.key, addressList: [$0.value])
}
} catch DecodingError.typeMismatch {
addressTypes = try unkeyedContainer.decode([String: [Address]].self).map {
AddressType(label: $0.key, addressList: $0.value)
}
}
addresses.append(contentsOf: addressTypes)
}
self.addresses = addresses
}
}
答案 2 :(得分:-3)
我相信"适当的"方式应该使用DateTimeZone