将亚马逊应用商店购买日期收据字符串解析为日期时间
Parsing amazon app store purchaseDate receipt string to DateTime
亚马逊应用商店的购买收据的购买日期格式为“Wed Feb 02 17:28:08 GMT+00:00 2022”,但我不确定如何将其正确转换为有效的 DateTime由于包含时区偏移。
DateTime.Parse("Wed Feb 02 17:28:08 GMT+00:00 2022");
标准 DateTime.Parse 函数只是抛出 FormatException: String was not recognized as a valid DateTime.
如何将此字符串解析为日期时间?
编辑:
评论建议 DateTimeOffset.Parse 但这也给出了相同的 FormatException
DateTimeOffset.Parse("Wed Feb 02 17:28:08 GMT+00:00 2022", CultureInfo.InvariantCulture);
您可以在 DateTimeOffset.ParseExact
中尝试传递预期的格式字符串。日期的正确格式字符串是 "ddd MMM dd HH:mm:ss 'GMT'zzz yyyy"
:
var date = DateTimeOffset.ParseExact(dateString,
"ddd MMM dd HH:mm:ss 'GMT'zzz yyyy",
CultureInfo.InvariantCulture);
但是,如果 GMT
没有出现在字符串中,但其他一些 Timezome 字符串出现了,您仍然会遇到问题。您可以尝试 TryParseExact
,如果它无法解析,则替换字符串中的时区字符(假设总是有 3 个字符 GMT、CST 等):
if (DateTimeOffset.TryParseExact(dateString,
"ddd MMM dd HH:mm:ss 'GMT'zzz yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out var dt))
{
// it worked
}
else
{
// try to replace the Timezone string
var replaced = dateString.Replace(dateString.Substring(20, 3), "");
date = DateTimeOffset.ParseExact(replaced, "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture))
}
要使用 ParseExact
或 TryParseExact
,您需要在解析之前知道预期的格式字符串。
亚马逊应用商店的购买收据的购买日期格式为“Wed Feb 02 17:28:08 GMT+00:00 2022”,但我不确定如何将其正确转换为有效的 DateTime由于包含时区偏移。
DateTime.Parse("Wed Feb 02 17:28:08 GMT+00:00 2022");
标准 DateTime.Parse 函数只是抛出 FormatException: String was not recognized as a valid DateTime.
如何将此字符串解析为日期时间?
编辑:
评论建议 DateTimeOffset.Parse 但这也给出了相同的 FormatException
DateTimeOffset.Parse("Wed Feb 02 17:28:08 GMT+00:00 2022", CultureInfo.InvariantCulture);
您可以在 DateTimeOffset.ParseExact
中尝试传递预期的格式字符串。日期的正确格式字符串是 "ddd MMM dd HH:mm:ss 'GMT'zzz yyyy"
:
var date = DateTimeOffset.ParseExact(dateString,
"ddd MMM dd HH:mm:ss 'GMT'zzz yyyy",
CultureInfo.InvariantCulture);
但是,如果 GMT
没有出现在字符串中,但其他一些 Timezome 字符串出现了,您仍然会遇到问题。您可以尝试 TryParseExact
,如果它无法解析,则替换字符串中的时区字符(假设总是有 3 个字符 GMT、CST 等):
if (DateTimeOffset.TryParseExact(dateString,
"ddd MMM dd HH:mm:ss 'GMT'zzz yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out var dt))
{
// it worked
}
else
{
// try to replace the Timezone string
var replaced = dateString.Replace(dateString.Substring(20, 3), "");
date = DateTimeOffset.ParseExact(replaced, "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture))
}
要使用 ParseExact
或 TryParseExact
,您需要在解析之前知道预期的格式字符串。