varuncodee Ответов: 3

Как сделать один и тот же формат даты для всего проекта C sharp windows.


Я пытаюсь разработать программный проект, я хочу, чтобы весь мой проект использовал один и тот же формат даты, независимо от того, какой системный формат даты, даже если я использую DateTime.Now. Помогите мне, пожалуйста, дать предложение или решение чего-нибудь.

Что я уже пробовал:

String.Format("{0:dd-MM-yyyy}", dt);

я использую это, но я не хочу писать этот код каждый раз, когда я использую дату

PIEBALDconsult

Пожалуйста, не делайте этого, пользователь будет ожидать, что ваше приложение будет использовать формат, который он указал через операционную систему, и может быть очень расстроен, если ваше приложение не выполнит этот выбор-я знаю, что так и будет.
Имейте также в виду, что Международный Стандарт ISO 8601 -- гггг-ММ-ДД

varuncodee

Сначала они использовали формат DD-MM-YYYY, так что все даты хранятся в базе данных в одном формате, а через некоторое время кто-то по ошибке изменил системный формат даты на MM/DD/YYYY, так что база данных содержит другой тип формата. таким образом, они сталкиваются с проблемой, когда нужно ввести дату показа в crystal report или когда они ищут какую-то запись по дате, она не даст результата после изменения даты.

PIEBALDconsult

Я очень надеюсь, что вы не храните даты в виде строк. Если это так, то вам крышка.

BillWoodruff

Почему вы хотите контролировать формат ? Вы ожидаете нескольких пользователей в разных культурах ?

3 Ответов

Рейтинг:
2

OriginalGriff

На самом деле у вас нет выбора: значение DateTime вообще не имеет формата, оно хранится как количество тиков с фиксированной точки в прошлом. Он получает формат только тогда, когда вы решаете преобразовать его в строку для отображения. И если вы не укажете формат, он использует текущую культуру ПК.

Вы можете установить культуру по умолчанию для вашего приложения:

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-GB");
И это заставило бы формат по умолчанию соответствовать этой культуре, но ... это также повлияет на культуру по умолчанию, используемую для анализа дат ввода пользователем, так что это, вероятно, плохая идея.


Рейтинг:
0

F-ES Sitecore

Когда вы просите .net преобразовать дату в строку, не задавая ей формат, она использует ShortDatePattern, так что вам придется изменить это либо изменив настройки ОС (что, как я предполагаю, вы не можете сделать), либо сделав это в коде;

asp.net - как изменить формат данных для текущей культуры так, чтобы он применялся ко всему веб - приложению-переполнение стека[^]

Это довольно плохая практика, хотя вам лучше использовать явные форматы, которые вы получаете из конфигурации setting\helper function\extension method\whatever, даже если это означает больше кода.

public static class MyExtensions
{
    public static string ToCustomDate(this DateTime dt)
    {
        return dt.ToString("dd-MM-yyyy");
    }
}


DateTime.Now.ToCustomDate()


Karthik_Mahalingam

5

Рейтинг:
0

Priyabrata Maiti

Привет
Во время входа в систему вы вызываете нижеприведенную функцию, которая вам поможет.

public string NewDateFormat(string InputDate, string Format)
{
    var CurrentDate = DateTime.Parse(InputDate);
    return CurrentDate.ToString(Format);
}