添加 AM/PM 到时间

Add AM/PM To Time

我的 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

为什么 String.Format() 不加在 AM/PM 我的时间里?

这可能对你有用

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");

为了做类似的事情,我最终不得不制作一个基于 eu-US 的 CultureInfo,但将第二个参数设置为 false 以不允许系统/用户覆盖格式。

public static CultureInfo enUS = new CultureInfo("en-US", false);

然后我可以在任何需要格式化日期的代码中使用它来解析或使用具有 tt 格式的 date/time 格式的 toString我想要的上午或下午。

软件 运行 在 PC 上的系统语言设置与我的不同。他们使用 a.m 或 Pm 或类似的东西。当我们想使用上午或下午时。