- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想在 SQL Server 数据库中以这种格式记录 payment_date。
更新。本能是正确的。在这里找到解决方案:http://www.codeillustrator.com/2010/03/converting-paypal-paymentdate-to-net.html ,验证...当然,如果 Paypal 搬出西海岸,我就会有麻烦了。有没有更好的方法来解析这个?也许与 TimeZone 一起?
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. 显然,至少在以前的版本中,沙盒会返回“Feb”。而直播返回“Feb”。哈哈。快来救救我吧!
Update3. Regex 版本链接 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);
}
关于c# - 如何将 Paypal 的 HH :MM:SS DD Mmm(. ) YYYY PST/PDT 转换为 C# UTC DateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500160/
我需要使用正则表达式验证格式为 dd/mm/yyyy 的日期字符串。 此正则表达式验证 dd/mm/yyyy,但不验证 31/02/4500 等无效日期: ^(0?[1-9]|[12][0-9]|3[
我需要一个正则表达式来支持日期格式 dd-MMM-yyyy 和 dd-MMM。 例如: 04-Oct-2010 04-Oct 04-OCT-2010 04-OCT 最佳答案 如果您只需要 C# 解决方
我的字段包含字符串值,如 JUL/11/2017、JAN/11/17。虽然它是一个有效字段,但我无法使用 is_date 函数对其进行验证 SET DATEFORMAT MDY; if isdate
这个问题在这里已经有了答案: Why does Date.parse give incorrect results? (11 个答案) 关闭 9 年前。 我正在获取类似 dd-MMM-yyyy 或
我已经搜索了该网站,但没有找到接近我需要的答案。基本上我的日期正确显示为“2013-05-09”,但我想要的是“2013 年 3 月 19 日”或使其更好“3 月 19 日, 2013 年”。 请向我
我是 Java 新手,在使用下面的代码时无法检索月份,而是将月份值设置为 0。请指出我在这里犯的错误。 * for(int i=0;i 关于java.time java.time框架内置于 Java
我在使用 Excel 宏 (VBA) 时遇到问题,该宏旨在从 Excel 电子表格中获取日期,减去一个月并将其重新格式化为 MMM-YY。基本上我想采取 3/31/2013 并将其转换为 2 月 13
我有一个从dd MMM yyyy格式的文件中提取的字符串,我想转换为unixtime进行监视。 举个例子: 19 Jul 2017 我想显示为: 1500422400 根据一些搜索,我正在尝试以下操作
我正在尝试使用 VBA 在 Excel 中格式化日期,当前月份采用 mmm 格式。不知何故,我得到的是上个月,而不是当前月份。我检查过,我的计算机月份是二月,但我得到的是一月。 这是我的代码: Cel
我的日期格式为 dd-MMM-yyyy。现在我想再加30天。如何做到这一点? 最佳答案 JodaTime提供了一个很好的方法 new DateTime().addDays(30); 如果您希望使用日期
我是 Google Apps 脚本的新手,我在日期格式转换方面遇到困难 我的源列的数据格式为“mm/dd/yyyy”。我想将其更改为“MMM-YY”,即我只需要提取月份和年份。 以下是我不成功的尝试
我在 mysql 数据库中有一个日期列,但日期的格式如下: 2016 年 1 月 2 月 - 16 日 2016 年 3 月 是否可以使用此日期格式查询日期范围? 例如: $query = "SELE
我维护了一个 start_date 为“日期”数据类型的表,现在我想以 dd-mmm-yyyy 格式显示日期。 public static BusObjectIterator weeksOfYear(
在 XCode 9 之前,我对 DateFormatter 没有任何问题。 随着更新,我遇到了一个似乎无法绕过的问题。 我正忙于将日期从 NSString 转换为 NSDate,但是我的代码似乎无法初
我正在尝试显示当前日期的周数,以及周数的日期范围。现在日期范围格式是日期时间,我想将其更改为“1 月 13 日”。关于如何解决这个问题的任何建议? override func viewDidLoad(
这个问题在这里已经有了答案: Change date format in a Java string (22 个答案) 关闭 3 年前。 我是 Java 新手。我正在尝试将日期从字符串转换为 MMM
我正在尝试使用 SimpleDateFormat 将我的月份转换为 MMM 格式,但我无法转换它。 tvDisplayDate = (TextView) findViewById(R.id.d
如何将日期从“dd MMM yyyy”转换为“yyyy-MM-dd”? 我知道我必须使用 SimpleDatFormat但它不起作用,类似问题的任何解决方案也不起作用。 我有一个日期“2015 年 1
脚本 $(function () { $(".datepicker").datepicker(); }); 文本框 当我选择日期表单文本框时,格式看起来像 10/11/2017
clickhouse有这样的功能吗?类似于mysql的STR_TO_DATE功能。 我需要将“04-Jun-2021”转换为“2021-06-04” 最佳答案 考虑使用 parseDateTime32
我是一名优秀的程序员,十分优秀!