C# 使用时区解析DateTime
这是我的密码:C# 使用时区解析DateTime,c#,datetime,C#,Datetime,这是我的密码: DateTime dateTime; string str = "2016-02-11 23:02:30 -0500"; if (!DateTime.TryParse(str, out dateTime)) { } 我收到了作为日期时间结果的{2/12/2016 7:02:30 am}。但我想获得2016年11月2日的2,有可能吗?我想您正在寻找TimeZoneInfo: DateTime dateTime; string str = "2016-02-11 23:02:30
DateTime dateTime;
string str = "2016-02-11 23:02:30 -0500";
if (!DateTime.TryParse(str, out dateTime))
{
}
我收到了作为日期时间结果的
{2/12/2016 7:02:30 am}
。但我想获得2016年11月2日的2
,有可能吗?我想您正在寻找TimeZoneInfo
:
DateTime dateTime;
string str = "2016-02-11 23:02:30 -0500";
if (!DateTime.TryParse(str, out dateTime))
{
// error
}
dateTime = DateTime.SpecifyKind(dateTime, DateTimeKind.Unspecified);
var serverTimeZone = TimeZoneInfo.Local; // Server time zone
var allTimeZones = TimeZoneInfo.GetSystemTimeZones(); // Time zone list
var clientTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
// DateTime in server time zone
var dateTimeZone = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(dateTime, clientTimeZone.Id, serverTimeZone.Id);
看看这把小提琴:
注意:
请记住,DateTime
不包含时区信息
“开发人员负责通过某种外部机制跟踪与日期时间值关联的时区信息”
您需要使用DateTimeOffset.Parse()将字符串解析为具有表示的偏移量的DateTimeOffset对象,然后将其格式化为不带偏移量的字符串(示例中为“yyyy-MM-dd HH:MM:ss”)由于您的字符串有值,我会将其解析为而不是
DateTime
DateTimeOffset dto;
string str = "2016-02-11 23:02:30 -0500";
if (DateTimeOffset.TryParse(str, CultureInfo.InvariantCulture, DateTimeStyles.None, out dto))
{
//Success
}
现在您有了一个DateTimeOffset
作为{11.02.2016 23:02:30-05:00}
,您可以使用它返回11.02.2016 23:02:30
尝试
DateTime.ParseExact
是否要更改IDE中DateTime的外观?或者您想更改它向用户显示的方式?第一,它来自于制度;您可以更改系统的日期时间设置。对于第二个,请尝试将datetime格式化为所需格式。