C# 在C中将类似java的日期字符串转换为DateTime#
我有以下格式的日期: 美国东部时间2012年3月13日星期二12:00:00 如何在C#net中将它们转换为DateTime?有。e、 g.对于“2009-05-08 14:40:52531”: 对于您的案例,格式应该是:“ddd MMM dd HH:mm:ss zzz yyyy”: 问题在于获取时区。K或zzz格式选项返回数字时差,例如+02:00,但您需要字母。可能的解决方案是创建将时间偏移转换为字母表示的辅助方法。不幸的是,我看不到任何其他合理的选择,使这件事的工作C# 在C中将类似java的日期字符串转换为DateTime#,c#,datetime,C#,Datetime,我有以下格式的日期: 美国东部时间2012年3月13日星期二12:00:00 如何在C#net中将它们转换为DateTime?有。e、 g.对于“2009-05-08 14:40:52531”: 对于您的案例,格式应该是:“ddd MMM dd HH:mm:ss zzz yyyy”: 问题在于获取时区。K或zzz格式选项返回数字时差,例如+02:00,但您需要字母。可能的解决方案是创建将时间偏移转换为字母表示的辅助方法。不幸的是,我看不到任何其他合理的选择,使这件事的工作 var timeZon
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern standard time");
var formattedDate = "Tue Mar 13 12:00:00 EST 2012".Replace("EST",tzi.BaseUtcOffset.ToString());
您可以使用
TryParseExact
:
class Program
{
static void Main(string[] args)
{
var dtString = "Tue Mar 13 12:00:00 EST 2012".ConvertTimeZone();
DateTime dt;
var success = DateTime.TryParseExact(
dtString,
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt);
Console.WriteLine(success);
if (Debugger.IsAttached) { Console.ReadKey(); }
}
}
public static class Extensions
{
private static Dictionary<string, string> _timeZones =
new Dictionary<string, string> { { "EST", "-05:00" } };
public static string ConvertTimeZone(this string s)
{
var tz = s.Substring(20, 3);
return s.Replace(tz, _timeZones[tz]);
}
}
类程序
{
静态void Main(字符串[]参数)
{
var dtString=“美国东部时间2012年3月13日星期二12:00:00”。ConvertTimeZone();
日期时间dt;
var success=DateTime.TryParseExact(
dtString,
“ddd-MMM-dd-HH:mm:ss-zzz-yyyy”,
CultureInfo.InvariantCulture,
DateTimeStyles。无,
输出dt);
Console.WriteLine(成功);
if(Debugger.IsAttached){Console.ReadKey();}
}
}
公共静态类扩展
{
专用静态字典\u时区=
新词典{“EST”,“-05:00”};
公共静态字符串转换时区(此字符串为s)
{
var tz=s.子串(20,3);
返回s.Replace(tz,_时区[tz]);
}
}
如果转换成功,success
将为true
,dt
将具有日期和时间值
好的,让我们稍微谈谈这个。实际上,我不得不采取行动,并承诺实际将时区转换为偏移量。这是非常准确的,但需要一些维护。你唯一需要维护的就是
字典\u时区
。您需要添加所有要支持的时区。我在dateValue=“2012年3月13日星期二12:00:00 EST”中试用了它代码>并且它不工作。@enb081,13
是一个月的哪一天吗?是的,它实际上是一个月的哪一天。当我做响应时。写(成功)
我得到错误
@enb081,尝试用zzz
代替K
。@enb081,让我在本地构建一个小应用程序,我很快就会回来。我得到异常字符串未被识别为有效日期时间。
仍然是相同的异常。
var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern standard time");
var formattedDate = "Tue Mar 13 12:00:00 EST 2012".Replace("EST",tzi.BaseUtcOffset.ToString());
class Program
{
static void Main(string[] args)
{
var dtString = "Tue Mar 13 12:00:00 EST 2012".ConvertTimeZone();
DateTime dt;
var success = DateTime.TryParseExact(
dtString,
"ddd MMM dd HH:mm:ss zzz yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt);
Console.WriteLine(success);
if (Debugger.IsAttached) { Console.ReadKey(); }
}
}
public static class Extensions
{
private static Dictionary<string, string> _timeZones =
new Dictionary<string, string> { { "EST", "-05:00" } };
public static string ConvertTimeZone(this string s)
{
var tz = s.Substring(20, 3);
return s.Replace(tz, _timeZones[tz]);
}
}