c# - 付款日期为 UTC

标签 c# asp.net paypal paypal-ipn

我正在对我网站的后端进行编程(ASP.Net C# 框架 4.0)。我正在使用我的 PayPal IPN 监听器监听结果,这将更新我的后端数据库。

付款时,我想记录付款日期。我在解析 IPN 消息中提供给我的 payment_date 参数时遇到问题。它看起来像这样:

args["payment_date"]: 10:23:05 Dec 02, 2013 PST

下面的 try-parse 总是返回 false:

DateTime paymentDate = DateTime.UtcNow;
DateTime.TryParse(args["payment_date"], out paymentDate);

PST 代表太平洋标准时间,对吗?我读到一些使用 PST 的美国州将在一年中的某个时候切换到 PDT(太平洋夏令时)。

在我的数据库中,我想将所有 DateTimes 存储为 UTC。有什么方法可以让 PayPal 给我 UTC 的付款日期?还是我必须编写自己的解析器?如果是这样,那么除了从 PST 切换到 PDT 之外,还有什么我应该注意的吗?

也许你认为我应该只使用我自己的服务器时间来记录付款日期,但我只是认为在实际的 IPN 消息中使用 PayPal 自己给出的日期会更好。

最佳答案

只需指定一个自定义的 DateTime 格式来匹配 PayPal 给你的格式,并将其传递给 TryParseTryParseExact 方法:

DateTime paymentDate = DateTime.UtcNow;
string format = "hh:mm:ss MMM dd, yyyy";
DateTime.TryParseExact(args["payment_date"], out paymentDate, format, CultureInfo.InvariantCulture);

参见:http://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx

.NET 不支持解析时区速记,因此根据 Patrick 对我的回答的评论,请在此处查看解决方法:Parse DateTime with time zone of form PST/CEST/UTC/etc

关于c# - 付款日期为 UTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20336135/

相关文章:

c# - EF : Map base class property with fluent API

c# - ASP.Net MVC 5 - 解决方案架构 - 分离关注点的区域 - 进一步分离

c# - 我得到 'A project cannot have more than one ApplicationXaml item'

c# - 如何在c#和vb.net中获取客户端机器的MAC地址

c# - 显示 "The resource cannot be found"错误的自定义错误页面

asp.net - 使用 aspnet_compiler.exe 编译 .Net Web Apps

paypal - 如何测试 PayPal DoExpressCheckoutPayment?

php - Paypal 订阅按钮

paypal - 在捕获将资金从您的买家账户转移到您的 PayPal 账户后,商家会在多长时间内收到资金?

c# - ASP .NET 中 DataBind() 函数的反转是什么