如何将 Paypal 的 HH:MM:SS DD Mmm(.) YYYY PST/PDT 转换为 C# UTC 日期时间?

2023-11-22

我想在 SQL Server 数据库中以这种格式记录 payment_date 。

Update.直觉在这一点上是正确的。在这里找到了解决方案:http://www.codeillustrator.com/2010/03/converting-paypal- paymentdate-to-net.html,正在验证……当然,如果 Paypal 搬出西海岸,我就会遇到麻烦。有没有更好的方法来解析这个?也许与时区有关?

public static DateTime ConvertPayPalDateTime(string payPalDateTime)
{
    // accept a few different date formats because of PST/PDT timezone and slight month difference in sandbox vs. prod.
    string[] dateFormats = { "HH:mm:ss MMM dd, yyyy PST", "HH:mm:ss MMM. dd, yyyy PST", "HH:mm:ss MMM dd, yyyy PDT", "HH:mm:ss MMM. dd, yyyy PDT" };
    DateTime outputDateTime;

    DateTime.TryParseExact(payPalDateTime, dateFormats, new CultureInfo("en-US"), DateTimeStyles.None, out outputDateTime);

    // convert to local timezone
    outputDateTime = outputDateTime.AddHours(3);

    return outputDateTime;
}

等一下,上面的代码对我来说是完全错误的。我在西海岸!理想情况下,应该更新它以将日期发送到正确的 UTC DateTime 并处理任何时区。此外,上面的代码无法正确处理 PDT(如果转换为 UTC)。

Update2.显然,至少在以前的版本中,沙箱会返回“二月”。而现场返回的是“二月”。哈哈。谁来救救我吧!

Update3.链接到正则表达式版本http://www.ifinity.com.au/Blog/EntryId/77/Converting-PayPal-Dates-to-Net-DateTime-using-Regex,但调试可能是一个问题。正则表达式似乎不是执行此操作的正确方法。一定会有更好的办法。

/// <summary>
/// Converts a PayPal datestring into a valid .net datetime value
/// </summary>
/// <param name="dateValue">a string containing a PayPal date</param>
/// <param name="localUtcOffset">the number of hours from UTC/GMT the local 
/// time is (ie, the timezone where the computer is)</param>
/// <returns>Valid DateTime value if successful, DateTime.MinDate if not</returns>
private static DateTime ConvertFromPayPalDate(string rawPayPalDate, int localUtcOffset)
{
    /* regex pattern splits paypal date into
     * time : hh:mm:ss
     * date : Mmm dd yyyy
     * timezone : PST/PDT
     */
     const string payPalDateRegex = @"(?<time>\d{1,2}:\d{2}:\d{2})\s(?<date>(?<
Mmm>[A-Za-z\.]{3,5})\s(?<dd>\d{1,2}),?\s(?<yyyy>\d{4}))\s(?<tz>[A-Z]{0,3})";  
    //!important : above line broken over two lines for formatting - rejoin in code editor
    //example 05:49:56 Oct. 18, 2009 PDT
    //        20:48:22 Dec 25, 2009 PST
    Match dateMatch = Regex.Match(rawPayPalDate, payPalDateRegex, RegexOptions.IgnoreCase);
    DateTime time, date = DateTime.MinValue;
    //check to see if the regex pattern matched the supplied string
    if (dateMatch.Success)
    {
        //extract the relevant parts of the date from regex match groups
        string rawDate = dateMatch.Groups["date"].Value;
        string rawTime = dateMatch.Groups["time"].Value;
        string tz = dateMatch.Groups["tz"].Value;

        //create date and time values
        if (DateTime.TryParse(rawTime, out time) && DateTime.TryParse(rawDate, out date))
        {
            //add the time to the date value to get the datetime value
            date = date.Add(new TimeSpan(time.Hour, time.Minute, time.Second));
            //adjust for the pdt timezone.  Pass 0 to localUtcOffset to get UTC/GMT
            int offset = localUtcOffset + 7; //pdt = utc-7, pst = utc-8
            if (tz == "PDT")//pacific daylight time
                date = date.AddHours(offset);
            else  //pacific standard time
                date = date.AddHours(offset + 1);
        }
    }
    return date;
}

自 2006 年以来我就没有做过任何 C# 工作,因此这段代码可能无法编译。飞行前测试一下!

public static DateTime ConvertPayPalDateTime(string payPalDateTime)
{
  // Get the offset.
  // If C# supports switching on strings, it's probably more sensible to do that.
  int offset;
  if (payPalDateTime.EndsWith(" PDT"))
  {
     offset = 7;
  }
  else if (payPalDateTime.EndsWith(" PST"))
  {
     offset = 8;
  }
  else
  {
    throw some exception;
  }

  // We've "parsed" the time zone, so remove it from the string.
  payPalDatetime = payPalDateTime.Substring(0,payPalDateTime.Length-4);

  // Same formats as above, but with PST/PDT removed.
  string[] dateFormats = { "HH:mm:ss MMM dd, yyyy", "HH:mm:ss MMM. dd, yyyy" };

  // Parse the date. Throw an exception if it fails.
  DateTime ret = DateTime.ParseExact(payPalDateTime, dateFormats, new CultureInfo("en-US"), DateTimeStyles.None, out outputDateTime);

  // Add the offset, and make it a universal time.
  return ret.AddHours(offset).SpecifyKind(DateTimeKind.Universal);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Paypal 的 HH:MM:SS DD Mmm(.) YYYY PST/PDT 转换为 C# UTC 日期时间? 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • CodeIgniter:无法加载请求的文件:

    嗨 我是 codeigniter 的新手 我的网站可以在本地运行 但是当我上传时 出现以下错误 遇到错误 无法加载请求的文件 home home view php 这是我的控制器
  • Java 是否像 C++ 一样有未定义的行为?

    未定义的行为和序列点 上面的链接讨论的是C 中的序列点和副作用 简而言之 这意味着在两个序列点之间 如果我们有多个副作用 则副作用的顺序是未指定的 例如 int x 1 int y 2 int z x y 我们可以确定的是z等于3 之后z得
  • Matlab - 计算大稀疏(A'*A)矩阵的最大特征值

    我有一个大 400K 400K 稀疏矩阵 我需要计算的最大特征值A A 问题是由于内存问题 Matlab 甚至无法计算 A 我也尝试过 a b c find A 然后通过创建转置稀疏矩阵进行转置 但是尽管find 有效 但 sprase 创
  • 如何在 Windows 7 的登录屏幕上显示 UI

    我想在登录前屏幕 用户通常输入用户名 密码的屏幕 上显示与用户交互的 UI我读到 Winlogon 软件包的体系结构已更改 并且在 Windows 7 中对我没有帮助 有人建议我使用 WTS 功能 但我仍然不清楚如何使用它们或使用哪些功能
  • 如何使用 python 和 matplotlib 注释行尾?

    使用数据框和基本图 如下所示 import pandas as pd import numpy as np import matplotlib pyplot as plt np random seed 123456 rows 75 df p
  • 错误:View android.widget.ListView 不是滑动抽屉

    我在用NavigationDrawer在我的 Android 应用程序中 我也制作了自己的自定义布局 XML 文件及其适配器 但是当我运行我的程序时 我的应用程序崩溃并显示以下日志 我无法追踪其原因 有什么建议吗 活动主文件
  • 将序列链接到 hsqldb 中的标识

    在PostgreSql中 我们可以定义一个序列并将其用作表的主键 在 HsqlDB 中 我们仍然可以创建一个不链接到任何用户定义序列的自动增量标识列 是否可以使用用户定义的序列作为HsqlDB中自增标识列的生成器 PostgreSql 中的
  • Unity3D-获取组件

    在Unity3D中获取组件的最简单方法是什么C My case GameObject gamemaster C script MainGameLogic cs attached to gamemaster A boolean backfac
  • 编译器在运行前将 Java 字节码转换为与平台无关的 C 代码?

    我正在寻找一个编译器 可以在运行之前将 Java 字节码转换为独立于平台的 C 代码 提前编译 然后 我应该能够使用标准 C 编译器将 C 代码编译为目标平台的可执行文件 据我了解 这种方法仅适用于某些不经常修改的 Java 应用程序 那么
  • 如何在现代 C++ 中将 float 转换为 int

    尽管看起来很奇怪 但我找不到如何干净地转换float to an int 这种技术 int int value int float value 0 5 触发一个 warning use of old style cast in gcc 那么
  • Java中对象的内存消耗是多少?

    一个具有 100 个属性的对象所消耗的内存空间与 100 个对象 每个对象各有一个属性 所消耗的内存空间相同吗 为一个对象分配了多少内存 添加属性时使用了多少额外空间 Mindprod指出这不是一个容易回答的问题 JVM 可以自由地以任何内
  • 日期在 mysql 中插入为 0000-00-00 00:00:00

    My date输出在 foreach 循环中 2011年9月25日 2011年2月13日 2010年9月15日 2010年6月11日 2010年4月13日 2010年4月13日 2010年4月13日 09 09 24 02 19 09 12
  • 如何在 azure linux 托管的 Web 应用程序上运行 cronjobs?

    在 azure 上的 Linux Web 应用程序上找不到 Crontab 命令 我正在尝试为 Laravel 应用程序安排 cronjob 我正在尝试为我的 laravel web 应用程序运行一个 cronjob 在线解决方案建议我为此
  • R中如何合并两行?

    我想根据行名组合 求和两行 以在 R 中生成一行 最好的路线可能是创建一个新行并将两行求和在一起 示例 df A 1 3 4 6 B 3 2 7 9 C 6 8 1 2 D 3 2 8 9 其中 A B C D 是行名 我想将两行 A 和
  • Java XML:ClassCastException DeferredTextImpl

    这是我的代码 get the factory DocumentBuilderFactory dbf DocumentBuilderFactory newInstance try Using factory get an instance o
  • 从 MatPlotLib 画布获取二进制图像数据?

    我试图从 matplotlib 画布中获取二进制数据 以便将其附加到电子邮件中 但我发现这样做的唯一方法是说 filename image png canvas print figure filename with open filenam
  • 如何将该程序从 conio 移植到curses?

    我在 Windows 上编写了这个简单的程序 由于Windows有conio 所以它工作得很好 include
  • 将 Equinox OSGi 集成到 Apache Tomcat Web 应用程序中

    是否可以将 osgi equinox 引入到现有的 java Apache Tomcat 项目中 根据我的理解 OSGI 必须在某种 容器 内运行 我将如何整合它 我也在使用Jersey用于 RESTful 资源 您可能想看看这个问题 传统
  • Nginx、PHP + FPM 自定义错误页面

    我正在尝试创建一些自定义错误页面 但似乎无法让 500 页面正常工作 我有以下配置 server listen 80 root var www devsite index index php server name devsite erro
  • 如何将 Paypal 的 HH:MM:SS DD Mmm(.) YYYY PST/PDT 转换为 C# UTC 日期时间?

    我想在 SQL Server 数据库中以这种格式记录 payment date Update 直觉在这一点上是正确的 在这里找到了解决方案 http www codeillustrator com 2010 03 converting pa