将AM / PM添加到时间

时间:2017-01-16 02:01:38

标签: c# string.format

我的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()没有添加到我的时间?

2 个答案:

答案 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时。