gpt4 book ai didi

c# - 如何将字符串转换为日期时间

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:50 24 4
gpt4 key购买 nike

 string value =     "Sat Apr 28 2012 11:00:00 GMT-0400 (Eastern Daylight Time)"

我需要转换为日期时间

我试着做:
 DateTime datetime = DateTime.ParseExact(value, "MM/dd/yyyy hh:mm", null);

或者
 DateTime datetime2 = Convert.ToDateTime(value);

异常(exception):字符串未被识别为有效的日期时间。

最佳答案

您正在指定“MM/dd/yyyy hh:mm”的格式,但您的字符串甚至不是那种格式。

我怀疑您在使用“GMT-0400(东部夏令时间)”部分时会遇到问题 - 其余部分的格式为“ddd MMM dd yyyy HH:mm:ss”或“ddd MMM d yyyy HH:mm:ss” "如果月份中的日期不总是两位数。

我建议您单独解析与 UTC 的偏移量,并创建一个 DateTimeOffset - 将第一部分(GMT 之前)解析为未指定的 DateTime - 然后解析偏移量。编辑:您可以使用 TimeSpan.ParseExact 解析偏移量但我相信你需要自己处理这个标志 - 我看不到任何有记录的方式来解析负时间跨度:(

编辑:请注意我的 Noda Time项目将允许您解析偏移部分,例如使用“'GMT'+HHmm”模式 - 显然我们会处理 LocalDateTime部分 - 但您仍然需要将字符串的不同部分彼此分开。示例代码:

using System;
using System.Linq;
using System.Xml.Linq;
using NodaTime;
using NodaTime.Text;

public class Test
{
static void Main()
{
string text = "Sat Apr 28 2012 11:00:00 GMT-0400 (Eastern Daylight Time)";
ZonedDateTime parsed = Parse(text);
Console.WriteLine(parsed);
}

static readonly LocalDateTimePattern LocalPattern =
LocalDateTimePattern.CreateWithInvariantInfo("ddd MMM d yyyy HH:mm:ss");

// Note: Includes space before GMT for convenience later
static readonly OffsetPattern OffsetPattern =
OffsetPattern.CreateWithInvariantInfo("' GMT'+HHmm");

static ZonedDateTime Parse(string text)
{
int gmtIndex = text.IndexOf(" GMT");
int zoneIndex = text.IndexOf(" (");
// TODO: Validation that these aren't -1 :)

string localText = text.Substring(0, gmtIndex);
string offsetText = text.Substring(gmtIndex, zoneIndex - gmtIndex);

var localResult = LocalPattern.Parse(localText);
var offsetResult = OffsetPattern.Parse(offsetText);

// TODO: Validate that both are successful

var fixedZone = DateTimeZone.ForOffset(offsetResult.Value);
return localResult.Value.InZoneStrictly(fixedZone);
}
}

请注意,这将给出 ZonedDateTime在固定时区 - 不是真正的东部时间。目前野田时间没有 OffsetDateTime ,这将是一个自然的契合...

关于c# - 如何将字符串转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10197437/

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