16

我的应用程序解析字符串数据,提取日期并识别日期格式并将其转换为 yyyy-MM-dd。

源日期可以是任何石灰 dd-mm-yyyy、dd/mm/yyyy、mm-dd-yyyy、mm/dd/yyyy 甚至 yyyy-MM-dd。

除了使用 switch case 尝试不同的排列和组合之外,还有其他有效的方法吗?

string sourceDate = "31-08-2012";
String.Format("{0:yyyy-MM-dd}", sourceDate);

上面的代码只返回相同的 sourceDate “31-08-2012”。

4

11 回答 11

17
string DateString = "11/12/2009";
IFormatProvider culture = new CultureInfo("en-US", true); 
DateTime dateVal = DateTime.ParseExact(DateString, "yyyy-MM-dd", culture);

这些链接也可能对您有所帮助

DateTime.ToString() 模式

日期时间的字符串格式 [C#]

于 2012-09-04T05:57:43.327 回答
14

将您的字符串转换为DateTime然后使用DateTime.ToString("yyyy-MM-dd");

DateTime temp = DateTime.ParseExact(sourceDate, "dd-MM-yyyy", CultureInfo.InvariantCulture);
string str = temp.ToString("yyyy-MM-dd");
于 2012-09-04T05:52:29.583 回答
6
string sourceDateText = "31-08-2012";
DateTime sourceDate = DateTime.Parse(sourceDateText, "dd-MM-yyyy")
string formatted = sourceDate.ToString("yyyy-MM-dd");
于 2012-09-04T05:53:54.183 回答
2

您可以通过以下方式将日期格式从更改dd/MM/yyyy为:yyyy-MM-dd

string date = DateTime.ParseExact(SourceDate, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");

在这里,SourceDate是变量,您将在其中获得选定的日期。

于 2018-05-05T07:46:36.410 回答
1

您需要将输入解析为 DateTime 对象,然后将其转换为您想要的任何文本格式。

如果您不确定您将获得什么格式,您可以通过使用验证或 datetimePicker 或其他一些组件将用户限制为固定格式。

于 2012-09-04T05:54:03.403 回答
1

这是您的主要问题:

源日期可以是 dd-mm-yyyy、dd/mm/yyyy、mm-dd-yyyy、mm/dd/yyyy 甚至 yyyy-MM-dd。

如果给你01/02/2013,是 1 月 2 日还是 2 月 1 日?你应该先解决这个问题,解析输入会容易得多。

我建议您退后一步,更详细地探索您要解决的问题。

于 2012-09-04T06:02:53.730 回答
1

试试这个代码:

 lblUDate.Text = DateTime.Parse(ds.Tables[0].Rows[0]["AppMstRealPaidTime"].ToString()).ToString("yyyy-MM-dd");
于 2020-02-12T12:54:08.143 回答
1

您可以将可能的日期格式写入数组并解析日期,如下所示:

public static void Main(string[] args)
        {
            string dd = "12/31/2015"; //or 31/12/2015
            DateTime startDate;
            string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
                                "dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy", "MM/dd/yyyy"};
            
            DateTime.TryParseExact(dd, formats, 
            System.Globalization.CultureInfo.InvariantCulture,
            System.Globalization.DateTimeStyles.None, out startDate);
                
            Console.WriteLine(startDate.ToString("yyyy-MM-dd"));
            
        }
于 2020-08-27T12:15:28.330 回答
0
if (DateTime.TryParse(datetoparser, out dateValue))
{
   string formatedDate = dateValue.ToString("yyyy-MM-dd");
}
于 2020-11-18T10:33:30.293 回答
0
string sourceDate = "15/06/2021T00.00.00";
DateTime Date = DateTime.Parse(sourceDate)
string date = Date.ToString("yyyy-MM-dd");
于 2021-06-25T08:07:53.067 回答
0
Convert.toDateTime(sourceDate).toString("yyyy-MM-dd");
于 2021-10-09T05:38:29.143 回答