如何将字符串从 PayPal payment_date 转换为日期时间
How to convert string to Date Time from PayPal's payment_date
我的网站从 PayPal 接收一些数据。 PayPal 提供了一个字符串来表示日期时间
10:52:32 Jan 17, 2019 PST
因为它是一个字符串,我知道我可以通过白色 space、逗号和冒号来手动拆分它。然后我可以根据已拆分的内容创建 DateTime
对象
在我尝试之前,我的问题是,这可以由框架完成 "automatically" 吗?
我的努力表明没有
DateTime.Parse("10:52:32 Jan 17, 2019 PST"); //System.FormatException: 'The string was not recognized as a valid DateTime. There is an unknown word starting at index NN.'
您可以使用 DateTime.ParseExact 来解析字符串。
如果您始终知道时区,则可以使用以下内容
var paypalDateTime = DateTime.ParseExact("10:52:32 Jan 17, 2019 PST", "HH:mm:ss MMM dd, yyyy PST", CultureInfo.InvariantCulture);
Console.WriteLine(paypalDateTime.ToString());
// Output: 1/17/2019 10:52:32
如果你想
var inputDates = new [] {
"10:52:32 Jan 17, 2019 PST",
"10:52:32 Jan 17, 2019 GMT",
"10:52:32 Jan 17, 2019 UT",
"10:52:32 Jan 17, 2019 NZST"
};
foreach (var inputDate in inputDates)
{
var timeZone = inputDate.Substring(inputDate.LastIndexOf(" ") + 1);
var paypalDateTime = DateTime.ParseExact(inputDate.Substring(0, inputDate.LastIndexOf(" ")), "HH:mm:ss MMM dd, yyyy", CultureInfo.InvariantCulture);
// Here you can handle the timezone
Console.WriteLine(paypalDateTime.ToString() + " in timezone " + timeZone);
}
产出
1/17/2019 10:52:32 AM in timezone PST
1/17/2019 10:52:32 AM in timezone GMT
1/17/2019 10:52:32 AM in timezone UT
1/17/2019 10:52:32 AM in timezone NZST
您可以使用 DateTime
方法 ParseExact
来达到这个目的:
var dateTimeString = "10:52:32 Jan 17, 2019 PST";
var dateTime = DateTime.ParseExact(dateTimeString.Substring(0, dateTimeString.LastIndexOf(" ")), "HH:mm:ss MMM dd, yyyy", CultureInfo.InvariantCulture);
不幸的是,该框架对时区的支持很差。您将必须创建时区字典并将它们映射到各自的时间偏移,然后手动将其添加到生成的 DateTime 对象中。
这是一种方法:。
我的网站从 PayPal 接收一些数据。 PayPal 提供了一个字符串来表示日期时间
10:52:32 Jan 17, 2019 PST
因为它是一个字符串,我知道我可以通过白色 space、逗号和冒号来手动拆分它。然后我可以根据已拆分的内容创建 DateTime
对象
在我尝试之前,我的问题是,这可以由框架完成 "automatically" 吗?
我的努力表明没有
DateTime.Parse("10:52:32 Jan 17, 2019 PST"); //System.FormatException: 'The string was not recognized as a valid DateTime. There is an unknown word starting at index NN.'
您可以使用 DateTime.ParseExact 来解析字符串。
如果您始终知道时区,则可以使用以下内容
var paypalDateTime = DateTime.ParseExact("10:52:32 Jan 17, 2019 PST", "HH:mm:ss MMM dd, yyyy PST", CultureInfo.InvariantCulture);
Console.WriteLine(paypalDateTime.ToString());
// Output: 1/17/2019 10:52:32
如果你想
var inputDates = new [] {
"10:52:32 Jan 17, 2019 PST",
"10:52:32 Jan 17, 2019 GMT",
"10:52:32 Jan 17, 2019 UT",
"10:52:32 Jan 17, 2019 NZST"
};
foreach (var inputDate in inputDates)
{
var timeZone = inputDate.Substring(inputDate.LastIndexOf(" ") + 1);
var paypalDateTime = DateTime.ParseExact(inputDate.Substring(0, inputDate.LastIndexOf(" ")), "HH:mm:ss MMM dd, yyyy", CultureInfo.InvariantCulture);
// Here you can handle the timezone
Console.WriteLine(paypalDateTime.ToString() + " in timezone " + timeZone);
}
产出
1/17/2019 10:52:32 AM in timezone PST
1/17/2019 10:52:32 AM in timezone GMT
1/17/2019 10:52:32 AM in timezone UT
1/17/2019 10:52:32 AM in timezone NZST
您可以使用 DateTime
方法 ParseExact
来达到这个目的:
var dateTimeString = "10:52:32 Jan 17, 2019 PST";
var dateTime = DateTime.ParseExact(dateTimeString.Substring(0, dateTimeString.LastIndexOf(" ")), "HH:mm:ss MMM dd, yyyy", CultureInfo.InvariantCulture);
不幸的是,该框架对时区的支持很差。您将必须创建时区字典并将它们映射到各自的时间偏移,然后手动将其添加到生成的 DateTime 对象中。
这是一种方法:。