.net 如何将日期时间字符串转换为格式字符串

.net 如何将日期时间字符串转换为格式字符串,.net,datetime,date,.net,Datetime,Date,在.NET中,我有“2008年4月10日星期四下午1:30:00”,我想要“dddd,dd-MMMM,yyyy h:m:s-t”,“6:09:01 PM”和“hh:mm:ss-tt”,“8月29日星期五”和“ddd-d-MMM”,等等。似乎我应该能够以某种方式使用DateTimeFormatInfo 我想我可以用GetAllDateTimePatterns返回的每个模式格式化日期,当原始日期字符串和格式化的日期字符串匹配时,我就有了格式。但是,我想生成自定义格式,而不是标准格式 我想要格式字符串

在.NET中,我有“2008年4月10日星期四下午1:30:00”,我想要“dddd,dd-MMMM,yyyy h:m:s-t”,“6:09:01 PM”和“hh:mm:ss-tt”,“8月29日星期五”和“ddd-d-MMM”,等等。似乎我应该能够以某种方式使用DateTimeFormatInfo

我想我可以用GetAllDateTimePatterns返回的每个模式格式化日期,当原始日期字符串和格式化的日期字符串匹配时,我就有了格式。但是,我想生成自定义格式,而不是标准格式


我想要格式字符串。我不想要日期。我有日期时间值和日期的格式字符串值。我需要
ToString()

首先,您已经有了日期时间类型,还是有了字符串?如果是后者,请查看
DateTime.ParseExact()
DateTime.TryParseExact()
函数将该字符串转换为日期时间

一旦有了DateTime,就很容易了。只需调用DateTime的
.ToString()
方法

这两个部分的键不是DateTimeFormatInfo。相反,您可以使用。您可以将格式字符串与[Try]ParseExact()函数和ToString()函数一起使用


首先,您是否已经有了DateTime类型,或者您是否有字符串?如果是后者,请查看
DateTime.ParseExact()
DateTime.TryParseExact()
函数以将该字符串转换为DateTime

一旦有了DateTime,就很容易了。只需调用DateTime的
.ToString()
方法

这两个部分的键不是DateTimeFormatInfo。相反,您可以使用。您可以将格式字符串与[Try]ParseExact()函数和ToString()函数一起使用


只需确保您知道要处理的是哪种“文化”。

如果您希望将实际日期字符串转换为C#DateTime格式字符串,这是不可能做到的

例如,您将如何处理此字符串:

03/04/05 9:00
这个例子有几个问题:

  • 你不知道是月,是年,等等
  • 您不知道格式字符串应该使用12小时还是24小时时钟
  • 你不知道是准确地显示分钟,还是总是用00来代替

  • 如果您希望将实际日期字符串转换为C#DateTime格式字符串,这是不可能可靠地完成的

    例如,您将如何处理此字符串:

    03/04/05 9:00
    
    这个例子有几个问题:

  • 你不知道是月,是年,等等
  • 您不知道格式字符串应该使用12小时还是24小时时钟
  • 你不知道是准确地显示分钟,还是总是用00来代替

  • 将格式传递给ToString。使用指定的格式:

    
    DateTime d = DateTime.Now;
    Console.WriteLine(d.ToString("dddd, dd MMMM, yyyy h:m:s t"));
    Console.WriteLine(d.ToString("hh:mm:ss tt"));
    Console.WriteLine(d.ToString("ddd d MMM"));
    

    更新以反映问题的变化。

    给定的日期/时间字符串可能与一个或多个格式字符串相匹配,但您可以通过以下几行更接近您想要做的事情:

    
    class FindDateTimeFormat {
        public static void Show() {
            foreach (string item in GetMatchingFormats("Thursday, April 10, 2008 1:30:00 PM")) {
                Console.WriteLine(item);
            }
        }
    
        private static string[] GetMatchingFormats(string dateTimeString) {
            DateTimeFormatInfo formatInfo = CultureInfo.CurrentCulture.DateTimeFormat;
            List matchingFormats = new List();
            foreach (string format in formatInfo.GetAllDateTimePatterns()) {
                try {
                    DateTime dateTime = DateTime.ParseExact(dateTimeString, format, null);
                    if (!matchingFormats.Contains(format)) {
                        matchingFormats.Add(format);
                    }
                }
                catch (FormatException) {
                }
            }
            return matchingFormats.ToArray();
        }
    }
    
    

    将格式传递给ToString。使用指定的格式:

    
    DateTime d = DateTime.Now;
    Console.WriteLine(d.ToString("dddd, dd MMMM, yyyy h:m:s t"));
    Console.WriteLine(d.ToString("hh:mm:ss tt"));
    Console.WriteLine(d.ToString("ddd d MMM"));
    

    更新以反映问题的变化。

    给定的日期/时间字符串可能与一个或多个格式字符串相匹配,但您可以通过以下几行更接近您想要做的事情:

    
    class FindDateTimeFormat {
        public static void Show() {
            foreach (string item in GetMatchingFormats("Thursday, April 10, 2008 1:30:00 PM")) {
                Console.WriteLine(item);
            }
        }
    
        private static string[] GetMatchingFormats(string dateTimeString) {
            DateTimeFormatInfo formatInfo = CultureInfo.CurrentCulture.DateTimeFormat;
            List matchingFormats = new List();
            foreach (string format in formatInfo.GetAllDateTimePatterns()) {
                try {
                    DateTime dateTime = DateTime.ParseExact(dateTimeString, format, null);
                    if (!matchingFormats.Contains(format)) {
                        matchingFormats.Add(format);
                    }
                }
                catch (FormatException) {
                }
            }
            return matchingFormats.ToArray();
        }
    }
    
    

    您正在寻找DateTime.Now.ToString(“ddd-mm-YYYY”)之外的自定义格式等等?将日期时间字符串解析为自定义日期和时间格式字符串是什么意思?是否要将日期/时间的字符串表示形式转换为另一种格式?原始格式是否真的是字符串?我更新我的问题以帮助澄清我的目的。阅读对答案的注释,我想我现在明白你的要求。给定日期在字符串格式中,例如“2008年4月10日星期四下午1:30:00”,您需要返回“dddd,dd-MMMM,yyyy h:m:st”的类型成员。是否正确?我建议您更新问题,因为除了不清楚之外,您的示例中至少有一个是错误的。“2008年4月10日星期四下午1:30:00”不等同于“ddddd,dd-MMMM,yyyy h:m:st”。正确的格式应为“dddd,MMMM dd,yyyy h:m:s tt”。请注意月份和日期以及AM/PM的顺序。您正在寻找DateTime以外的自定义格式。现在。ToString(“ddd mm YYYY”)等?将DateTime字符串解析为自定义日期和时间格式字符串是什么意思。是否要将日期/时间的字符串表示形式转换为另一个?原文真的是一个字符串吗?我更新了我的问题,以帮助澄清我的目的。阅读对答案的评论,我想我现在明白了你的要求。给定一个字符串格式的日期,例如“2008年4月10日星期四下午1:30:00”,您需要返回“dddd,dd-MMMM,yyyy h:m:st”的类型成员。这是正确的吗?我建议你更新这个问题,因为除了不清楚之外,你的例子中至少有一个是错误的。“2008年4月10日星期四下午1:30:00”不等同于“dddd,dd-MMMM,yyyy h:m:st”。正确的格式应该是“dddd,MMMM dd,yyyy h:m:s tt”。请注意月份和日期的顺序以及AM/PM。是的,我同意我做得不可靠,但如果使用CultureInfo.DateTimeFormatInfo,那么它应该相当可靠。从你的例子来看,它应该是“MM/DD/yyy h:MM”,这足够接近了,因为我不在乎它是上午9点还是2100点。这取决于用户。#2是数据输入问题,用户可以解决。#3始终是分钟,因为我们使用的是日期时间字符串。是的,我同意我做得不可靠,但如果使用CultureInfo.DateTimeFormatInfo,那么它应该相当可靠。从你的例子来看,它应该是“MM/DD/yyy h:MM”,这足够接近了,因为我不在乎它是上午9点还是2100点。这取决于用户。#2是数据输入问题,用户可以解决。#3始终是分钟,因为我们是wo