gpt4 book ai didi

c# - 无法使用 C# 将从 PayPal 收到的日期转换为 UTC 日期

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:10 25 4
gpt4 key购买 nike

在我的 ASP.Net 应用程序中,我从 PayPal 收到一个日期字符串,当我尝试将其转换为 UTC 日期时,它总是失败。我已经在 LINQPad 工具中尝试过这种转换,但我总是无法成功解析日期字符串。

我的 ASP.Net 页面从 PayPal 收到的日期字符串是这样的:08:45:29 May 25, 2016 PDT

问题:如何在 C# 中成功地将 PayPal 接收日期转换为 UTC 日期?到目前为止我尝试过的代码如下。

LINQPad 中用于将 PayPal 日期转换为 UTC 日期的代码

string payPalDateString = "08:45:29 May 25, 2016 PDT";
DateTime date = DateTime.Now;

if( DateTime.TryParse(payPalDateString, out date) == true) {
"payPalDateString was successfully parsed".Dump();
DateTime dateUTC = date.ToUniversalTime();
dateUTC.Dump("payPalDateString in UTC is as below");
} else {
payPalDateString.Dump("payPalDateString was NOT successfully parsed");
}

PayPal 文档说明了以下有关发送日期的信息。

Time/Date stamp generated by PayPal, in the following format: HH:MM:SS DD Mmm YY, YYYY PST

PayPal 文档中提到的上述日期格式实际上应该是:HH:mm:ss MMM dd, yyyy PST

最佳答案

请引用下面的逻辑来解析 DateTime 它来自 Paypal

DateTime newDate;
DateTime.TryParseExact("08:45:29 May 25, 2016 PDT",
"HH:mm:ss MMM dd, yyyy PDT",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out newDate);
var utcDateTime = newDate.ToUniversalTime();

我已经添加了 dotnetfiddle代码


由于 OP 不确定传入的时区格式是否为 PDT,因此建议他在转换格式中动态替换时区。他提出了这个逻辑。

String.Format("HH:mm:ss MMM dd, yyyy {0}", 
payPalDateString.Substring(payPalDateString.Length - 3))

请注意,在运行时可能有许多其他替代方法来替换时区。该解决方案不包括任何错误处理,例如输入字符串未出现任何时区!!

关于c# - 无法使用 C# 将从 PayPal 收到的日期转换为 UTC 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37447027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com