c# - DateTime.ParseExact AM/PM 指标小写

标签 c# datetime formatting

考虑以下字符串...

var myString = "11/05/2015 01:04:16 p.m."

我可以在不强制字符串大写的情况下对该字符串执行 DateTime.ParseExact 吗? am/pm 指示器让我很伤心,因为它是小写的所以无法解析。我有一个带有格式字符串常量的静态类。是否有用于指定小写 am/pm 指示符的格式标记?

格式化字符串

namespace myProgram
{
    public static class MyFormatStrings
    {
        public const string MyDateTimeFormat = "dd/MM/yyyy hh:mm:ss t\\.\\M\\.";
    }
}

要解析的逻辑

namespace myProgram
{
    public static class MyProgram
    {
        public void MyMethod()
        {
            var myStringDateValue = "11/05/2015 01:04:16 p.m.";
            var result = DateTime.ParseExact(myStringDateValue, MyFormatStrings.MyDateTimeFormat, CultureInfo.InvariantCulture);
        }
    }
}

最佳答案

您可以在您的文化中更改 DateFormatInfo 的 AMDesignator/PMDesignator。

此信息是只读的,因此您必须创建自己的文化:

我还更改了 MyDateTimeFormat 格式,这样它就可以工作了:

    public class MyCultureInfo : CultureInfo
    {
        public MyCultureInfo():base(CultureInfo.InvariantCulture.Name)
        {
        }
        public override DateTimeFormatInfo DateTimeFormat
        {
            get
            {
                DateTimeFormatInfo myDateTimeFormatInfo = base.DateTimeFormat;
                myDateTimeFormatInfo.PMDesignator = "p.m.";
                myDateTimeFormatInfo.AMDesignator = "a.m.";
                return myDateTimeFormatInfo;
            }
            set
            {
                base.DateTimeFormat = value;
            }
        }
    }
    public static class MyFormat
    {
        public const string MyDateTimeFormat = "dd/MM/yyyy hh:mm:ss tt";
    }
    static int Main(string[] args)
    {
        var myStringDateValue = "11/05/2015 01:04:16 p.m.";
        var result = DateTime.ParseExact(myStringDateValue, MyFormat.MyDateTimeFormat, new MyCultureInfo());
    }

关于c# - DateTime.ParseExact AM/PM 指标小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29757903/

相关文章:

c# - .NET Process Start Process Error using credentials (句柄无效)

php - 如何将日期转换为小时

php - 为什么 DateTime 不能解析 dd.mm.yy 总是正确的?

mysql - 仅当数字在mysql中不圆时如何获取小数

c# - Console.WriteLine 正确处理空字符串

c# - 谁能用 C# 中的带符号 float 解释这种奇怪的行为?

c# - MDIParents Forms 和 Childs 中的事件

python - 在Python中使用groupby计算平均差异

PHPMailer AddAddress()

c - 当文件包含特殊字符以控制进程时,如何将文件读入 C 中的结构