powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DateTime? format
17 сообщений из 17, страница 1 из 1
DateTime? format
    #39129487
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Подскажите пожалуйста как задать формат дате которая может быть равна null?

datetime? формат "dd.MM.yyyy"
...
Рейтинг: 0 / 0
DateTime? format
    #39129489
Nechto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел решение
Код: c#
1.
dt2 != null ? dt2.Value.ToString("yyyy-MM-dd hh:mm:ss") : "n/a"
...
Рейтинг: 0 / 0
DateTime? format
    #39129545
VAlexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nechto,

Просто на всякий случай, обратите внимание на различие формата часов hh от HH...
...
Рейтинг: 0 / 0
DateTime? format
    #39129669
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nechto
Код: c#
1.
dt2 != null ? dt2.Value.ToString("yyyy-MM-dd hh:mm:ss") : "n/a"


И правильнее все-таки так:
Код: c#
1.
dt2.HasValue ? dt2.Value.ToString("yyyy-MM-dd hh:mm:ss") : "n/a";
...
Рейтинг: 0 / 0
DateTime? format
    #39129718
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NechtoЗдравствуйте! Подскажите пожалуйста как задать формат дате которая может быть равна null?

datetime? формат "dd.MM.yyyy"

Код: c#
1.
2.
3.
DateTime? dt = DateTime.Now;

var formattedString = $"{dt:dd.MM.yyyy}";



Если нельзя использовать C# 6, то

Код: c#
1.
var formattedString = String.Format("{0:dd.MM.yyyy}", dt);
...
Рейтинг: 0 / 0
DateTime? format
    #39129848
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronИ правильнее все-таки так:
Код: c#
1.
dt2.HasValue ? dt2.Value.ToString("yyyy-MM-dd hh:mm:ss") : "n/a";


Из каких соображений правильнее? С технической точки зрения и сравнение с null, и проверка HasValue эквивалентны:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      int? n = null;
      Console.WriteLine(n==null);
      Console.WriteLine(n.HasValue);
    }
  }
}


==>
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
.method private hidebysig static void  Main(string[] args) cil managed
{
  .entrypoint
  // Code size       36 (0x24)
  .maxstack  2
  .locals init ([0] valuetype [mscorlib]System.Nullable`1<int32> n)
  IL_0000:  ldloca.s   n
  IL_0002:  initobj    valuetype [mscorlib]System.Nullable`1<int32>
  IL_0008:  ldloca.s   n
  IL_000a:  call       instance bool valuetype [mscorlib]System.Nullable`1<int32>::get_HasValue()
  IL_000f:  ldc.i4.0
  IL_0010:  ceq
  IL_0012:  call       void [mscorlib]System.Console::WriteLine(bool)
  IL_0017:  ldloca.s   n
  IL_0019:  call       instance bool valuetype [mscorlib]System.Nullable`1<int32>::get_HasValue()
  IL_001e:  call       void [mscorlib]System.Console::WriteLine(bool)
  IL_0023:  ret
} // end of method Program::Main
...
Рейтинг: 0 / 0
DateTime? format
    #39129888
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныИз каких соображений правильнее? С технической точки зрения и сравнение с null, и проверка HasValue эквивалентны:
Из тех же, что правильнее писать string.Empty вместо "" :)
...
Рейтинг: 0 / 0
DateTime? format
    #39129893
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Тут точно ничего не напутал? :)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      int? n = null;
      Console.WriteLine(n==null);
      Console.WriteLine(n.HasValue);
    }
  }
}
...
Рейтинг: 0 / 0
DateTime? format
    #39129904
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronИз тех же, что правильнее писать string.Empty вместо "" :)
Из каких соображений?
AxeleronСон Веры Павловны,

Тут точно ничего не напутал? :)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      int? n = null;
      Console.WriteLine(n==null);
      Console.WriteLine(n.HasValue);
    }
  }
}


Нет, не напутал.
...
Рейтинг: 0 / 0
DateTime? format
    #39129913
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныAxeleronИз тех же, что правильнее писать string.Empty вместо "" :)
Из каких соображений?
1) string.Empty - это константа, и все случая ее использования в коде ссылаются на нее в пределах того же домена приложения.
2) Читаемость.


Сон Веры ПавловныAxeleronСон Веры Павловны,

Тут точно ничего не напутал? :)
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
namespace test
{
  class Program
  {
    static void Main(string[] args)
    {
      int? n = null;
      Console.WriteLine(n==null);
      Console.WriteLine(n.HasValue);
    }
  }
}



Нет, не напутал.
Ну если Да и Нет для тебя одно и тоже логически, я мало чем смогу помочь. У большинства пока все же логика основана на белевом значении 1 или 0.
...
Рейтинг: 0 / 0
DateTime? format
    #39129924
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronна б у левом значении
...
Рейтинг: 0 / 0
DateTime? format
    #39129943
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron1) string.Empty - это константа, и все случая ее использования в коде ссылаются на нее в пределах того же домена приложения.
http://referencesource.microsoft.com/#mscorlib/system/string.cs,76 :
Код: c#
1.
public static readonly String Empty;


- константы объявляются несколько по-другому.
Axeleron2) Читаемость.
Это субъективно.
AxeleronНу если Да и Нет для тебя одно и тоже логически, я мало чем смогу помочь. У большинства пока все же логика основана на белевом значении 1 или 0.
Не, для меня Да и Нет не одно и то же логически. Да и для компилятора тоже - Вы можете взять приведенный код, скомпилировать, потом декомпилировать его ildasm'ом, и сравнить. Мне кажется, что Вы немного не доразглядели пары IL-инструкций.
...
Рейтинг: 0 / 0
DateTime? format
    #39129957
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны http://referencesource.microsoft.com/#mscorlib/system/string.cs,76 :
Код: c#
1.
public static readonly String Empty;



- константы объявляются несколько по-другому.
Хорошо, но конструкция string.Empty лучше читабельна и меньше шансов на то, чтобы допустить ошибку. И все еще все равно ненамного, но быстрее, чем "".

Сон Веры ПавловныНе, для меня Да и Нет не одно и то же логически. Да и для компилятора тоже - Вы можете взять приведенный код, скомпилировать, потом декомпилировать его ildasm'ом, и сравнить. Мне кажется, что Вы немного не доразглядели пары IL-инструкций.
Проехали. Я о том, что надо было сравнивать n == null с !n.HasValue или n != null с n.HasValue для корректности.
...
Рейтинг: 0 / 0
DateTime? format
    #39130023
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronИ все еще все равно ненамного, но быстрее, чем "".
Приведите тест или ссылку. До .Net 2.0 разница в быстродействии, заключающаяся в интернировании строковых констант, действительно была, но сейчас её нет. Вот здесь человек пытался тестировать операции сравнения с "" и со string.Empty - разницы практически нет. Но использование string.Empty при конкатенации строк выдает больший по объему IL код - разница в пару строк, но, тем не менее. Далее, string.Empty нельзя использовать в качестве дефолтных параметров методов (будет ошибка компилятора Error Default parameter value for .. must be a compile-time constant), в case внутри switch (ошибка A constant value is expected), в конструкторах/инициализаторах атрибутов (ошибка An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type) - это к вопросу об области применимости "string.Empty правильнее, чем """. Ну, и вопрос этот достаточно старый - см., например, здесь и здесь - я для себя решил, что в случаях, когда можно употреблять и то, и то, окончательную точку может поставить только регламент (т.е. code conventions).
Если что, я тоже за использование string.Empty. По чисто субъективным причинам.
...
Рейтинг: 0 / 0
DateTime? format
    #39130038
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНо использование string.Empty при конкатенации строк выдает больший по объему IL код
Не нужно конкатинировать immutable типы.

Сон Веры ПавловныДалее, string.Empty нельзя использовать в качестве дефолтных параметров методов (будет ошибка компилятора Error Default parameter value for .. must be a compile-time constant), в case внутри switch (ошибка A constant value is expected), в конструкторах/инициализаторах атрибутов (ошибка An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type) - это к вопросу об области применимости "string.Empty правильнее, чем """
Да и не нужно эту конструцию там использовать - она сделана для поддержания порядка в коде. Я проверил, и да, наибольший прирост производительности использования string.Empty был до 2й версии .NET, но хорошие привычки остаются надолго.

Сон Веры ПавловныПо чисто субъективным причинам.
По каким?
...
Рейтинг: 0 / 0
DateTime? format
    #39130063
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronНе нужно конкатинировать immutable типы.
РЕчь о конкатенации через сложение? Или вообще о любой - через string.Join, string.Concat, string.Format, StringBuilder? Если второе - то я даже как-то не знаю, что на это ответить. Если первое - то и тут есть нюансы .
AxeleronПо каким?
Не люблю строковые литералы в коде, и всегда стараюсь их выносить в ресурсы (за исключением случаев, когда это может сильно сказаться на быстродействии).
...
Рейтинг: 0 / 0
DateTime? format
    #39130068
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныРЕчь о конкатенации через сложение? Или вообще о любой - через string.Join, string.Concat, string.Format, StringBuilder? Если второе - то я даже как-то не знаю, что на это ответить. Если первое - то и тут есть нюансы .
Имел в виду через сложение, и в частности множество конкатенаций. Не имелось ввиду никак не использование StringBuilder при конкатенации 2-3х строк.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DateTime? format
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]