Как я могу назначить только год, скажем 2011 года в переменной даты и времени в C # - PullRequest
8 голосов
/ 04 июля 2011

У меня есть текстовое поле asp, где пользователь будет заполнять только год, для этого значения у меня есть свойство Datetime типа в приложении c # и столбец типа Date в БД.Поэтому я хочу преобразовать этот txtYear.Text в DateTime, но он будет содержать только / и показывать год.Пожалуйста, помогите мне в этой ситуации.

Ответы [ 8 ]

8 голосов
/ 04 июля 2011

Объект DateTime всегда будет содержать полное значение DateTime, его нельзя использовать только для хранения года.(что это будет в любом случае?) Кроме того, тип данных "год" - это int, а не DateTime.

Итак, я хотел бы предложить изменить ваше свойство на тип данных int как в коде, так и в базе данных.

8 голосов
/ 04 июля 2011

Для отображения только года используйте формат «гггг».

        string s = "2011";
        DateTime d = new DateTime(int.Parse(s), 1, 1);


        Console.WriteLine(d.ToString("yyyy"));
        Console.WriteLine(d);
5 голосов
/ 04 июля 2011

Вы должны указать формат значения DateTime, которым вы манипулируете:

String dateTimeFormat = "yyyy";

Чтобы показать только часть значения DateTime, используйте следующее:

dateTimeValue.ToString(dateTimeFormat);

Чтобы прочитать значение String, представляющее год , в DateTime, используйте следующее:

DateTime.ParseExact(stringValue, dateTimeFormat, CultureInfo.InvariantCulture);

Метод DateTime.ParseExact (String, String, IFormatProvider) преобразует указанное строковое представление даты и времени в его эквивалент DateTime с использованием указанного формата и информации о формате, специфичном для культуры. Формат строкового представления должен точно соответствовать указанному формату.

Метод DateTime.ToString преобразует значение текущего объекта DateTime в его эквивалентное строковое представление.

2 голосов
/ 04 июля 2011

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

DateTime d = new DateTime(int.Parse(txtYear.Text, 1, 1);

txtYear.Text = d.ToString("yyyy"); 

Еще лучше было бы не использовать DateTime, а просто использовать int. Если у вас есть только год, вам нужен только Int.

2 голосов
/ 04 июля 2011

Вместо применения какой-либо функции для работы со строками используйте свойство Year.Проверьте документацию на MSDN, перейдя по ссылке ниже.

DateTime.Year Property

1 голос
/ 04 июля 2011

я предполагаю, что имя текстового поля txYear

DateTime dt = new DateTime (Convert.ToInt32(txYear.text),1,1)

сохранить это значение DT в базе данных

0 голосов
/ 22 июня 2018

Так я и сделал.

string format = "yyyy";
        var CurrentYear = DateTime.Now.ToString(format);
0 голосов
/ 04 июля 2011

Если вам нужен только год, почему бы вам не сделать его типа smallint?

В любом случае, если вы действительно хотите сделать это год,

DateTime x = new DateTime(Convert.ToInt32(txtYear.text), 1, 1);

Но убедитесь, что вы подтвердили, что txtYear.text действительно имеет действительный год.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...