我的datetime
采用此格式2017-01-15T21:00-07:00
,因此我正在解析它
string ADT = Convert.ToString(timestamp.DateOrTimestamp);
int index = ADT.IndexOf("T");
string FADT = (index > 0 ? ADT.Substring(0, index) : "");
DateTime dtFADT = DateTime.ParseExact(FADT, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
string ADT1 = ADT.Split('T', '-')[3];
Console.WriteLine("{0}: {1}", timestamp.Type, dtFADT.ToString("MM/dd/yyyy") + " " + String.Format("{0:h:mm t}", ADT1));
将写入控制台:Delivery: 01/15/2017 09:00:00
为什么 {AM} PM中String.Format()
没有添加到我的时间?
答案 0 :(得分:1)
这可能会为你做到这一点
string smdt = "2017-01-15T21:00-07:00";
string format = "yyyy-MM-ddTHH:mmzzz";
DateTime dt = DateTime.ParseExact(smdt, format, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
string extractedDate = dt.ToString("dd/MM/yy h:mm tt");
答案 1 :(得分:0)
为了做类似的事情,我最终不得不使用基于eu-US的CultureInfo,但将第二个参数设置为false,以禁止系统/用户超越格式。
public static CultureInfo enUS = new CultureInfo("en-US", false);
然后我可以在我需要格式化解析日期的任何地方使用它,或者使用具有 tt 格式的日期/时间的部分,它将放置我想要的AM或PM的格式
运行软件的PC上的系统语言设置与我的不同。他们使用了a.m或Pm或类似的东西。当我们想要使用AM或PM时。