繁体   English   中英

将 s 字符串转换为带时区的特定 DateTime 格式 - C#

[英]Convert s string to specific DateTime format with timezone - C#

我正在尝试这段代码 (c#):

 string input1 = "2009-11-22 01:01:05 +1:30"
                        string input2 = "2009-11-22 01:01:05"
                        DateTime date1 = new DateTime();
                        DateTime date2 = new DateTime();
                        string format = "yyyy-MM-dd hh:mm:ss [z]"
                        DateTime orgDate1 = DateTime.ParseExact(input1, format, null);
                        DateTime orgDate2 = DateTime.ParseExact(input2, format, null);

目的是:

  1. 将术语“[z]”识别为可选参数,以便正确解析 input1 和 input2。
  2. 在 orgDate1 和 orgDate2 中获取有效的 DateTime 解析值。 问题:即使忽略可选要求,我也无法获得解析值:
  string input1 = "2009-11-22 01:01:05 +1:30"
                        DateTime date1 = new DateTime();
                        string format = "yyyy-MM-dd hh:mm:ss zzz"
                        DateTime orgDate1 = DateTime.ParseExact(input1, format, null);

我尝试了很多选择,例如:

DateTime.ParseExact("2009-11-22 00:00:00 1", "yyyy-MM-dd hh:mm:ss z",null)
DateTime.ParseExact("2009-11-22 00:00:00 1", "yyyy-MM-dd hh:mm:ss Z",null)

但总是得到 formatException。

只有这段代码有效:

DateTime.ParseExact("2009-11-22 00:00:00Z", "yyyy-MM-dd hh:mm:ssZ",null)

但它返回确切的 UTC 时区,而我需要将它作为参数。

都在上面描述了

好的,经过多次试验,我发现以下代码有效:

DateTime.ParseExact("2009-11-22 00:00:00+1", "yyyy-MM-dd hh:mm:ss z",null)

所以保留另一个问题 - 我如何定义带有可选时区的格式,以便正确解析“2009-11-22 00:00:00+1”和“2009-11-22 00:00:00” ?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM