Как конвертировать любой тип даты в дд / мм / гггг - PullRequest
2 голосов
/ 14 июля 2010

Я получаю текст из файла * .csv в любом формате даты

Например: dd/mm/yy или dd/mm/yyyy или mm/dd/yyyy или 4 may 2010 ......

Как я могу конвертировать в один тип формата: dd/mm/yyyy?

Я работаю над C #, .NET 3.5, WinForms

Заранее спасибо

Ответы [ 6 ]

10 голосов
/ 14 июля 2010

Если вы получаете данные в нескольких форматах и ​​не можете их идентифицировать, у вас есть проблемы. Что значит "09/07/2010"? 7 сентября или 9 июля? Это первое, о чем вы можете подумать, и это никак не связано с технологиями. У вас есть два противоречивых формата - как вы собираетесь с ними бороться? Попробуйте файл и выберите наиболее вероятный вариант? Рассматривать каждую строку отдельно, предпочитая один формат другому? Спросите пользователя?

После того, как вы правильно проанализировали данные, форматировать их желаемым способом легко, согласно ответу Джона. Обратите внимание, что необходимо использовать «ММ» для месяца, а не «мм», который представляет минуты. Вы также должны указать, какую культуру использовать (влияя на разделители даты), предполагая, что вы не просто хотите использовать системный стандарт.

3 голосов
/ 14 июля 2010
DateTime.Parse("your data").ToString("dd/MM/yyyy");
2 голосов
/ 14 июля 2010

Проверить TryParseExact .

public static string FormatDate(string input, string goalFormat, string[] formats)
{
    var c = CultureInfo.CurrentCulture;
    var s = DateTimeStyles.None;
    var result = default(DateTime);

    if (DateTime.TryParseExact(input, formats, c, s, out result))
        return result.ToString(goalFormat);

    throw new FormatException("Unhandled input format: " + input);
}

Пример использования

var formats - new[] { "dd/MM/yy", "dd/MM/yyyy" };
var next = csvReader.Get("DateField");
var formattedDate = FormatDate(next, "dd/MM/yyyy", formats);
0 голосов
/ 15 июля 2010

String.Format ("{0: MM / дд / гггг}", DateTime.Now);

String.Format ("{0: дд / мм / гггг}", DateTime.Now);

и т. Д.

Источник: http://www.csharp -examples.net / string-format-datetime /

0 голосов
/ 14 июля 2010
using System;
using System.Collections.Generic;
using System.Text;
using System.Globalization;

namespace dateconvert
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime x = Convert.ToDateTime("02/28/10");
            Console.WriteLine(string.Format(x.ToString("d", DateTimeFormatInfo.InvariantInfo)));
            DateTime y = Convert.ToDateTime("May 25, 2010");
            Console.WriteLine(string.Format(y.ToString("d", DateTimeFormatInfo.InvariantInfo)));
            DateTime z = Convert.ToDateTime("12 May 2010");
            Console.WriteLine(string.Format(z.ToString("d", DateTimeFormatInfo.InvariantInfo)));
            Console.Read();
        }
    }
}
0 голосов
/ 14 июля 2010

Вы просто хотите использовать DateTime.ParseExact вместе с методами DateTime.ToString.

Прямой DateTime.Parse метод, конечно, имеет свои применения и может быть полезен для анализа дат, которые, как вы знаете, относятся к определенной культуре / языку, но, поскольку кажется, что данные вам даты могут быть в произвольном формате, который признано, вы можете специально использовать ParseExact.

Пример:

var myDate = DateTime.ParseExact("07/14/2010", "MM/dd/yyyy",
    CultureInfo.CurrentCulture);

var standardDateString = myDate.ToString("dd/MM/yyyy");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...