Программирование >>  Автоматически обновляемые приложения 

1 ... 8 9 10 [ 11 ] 12 13 14 ... 170


Запустив этот пример, вы увидите, как по-разному можно представить одну и ту же дату, используя различные комбинации (рис. 2.3).

Как использовать дату и время в приложении

Дату и время можно использовать как местные, так и в формате единого времени (UTC). Оказывается, свойство utcNow, обозначающее всеобщее скоординированное время, работает намного лучше свойства Now. Безусловно, при выводе даты и времени на экран пользователя нет смысла применять свойство UtcNow, но при сравнении двух значений времени и даты с целью узнать, какое событие произошло раньше, или для выполнения других вычислений, когда не нужно учитывать особенности культурной среды, выбор свойства UtcNow является предпочтительным. Таким образом, дату и время лучше хранить как значения формата UTC, пока не понадобится извлечь их в каком-то локализованном формате. Даже не думая о производительности, удобно хранить значения даты и времени в формате единого времени UTC, поскольку это позволяет точно сравнивать данные нескольких часовых поясов без влияния перехода на летнее и зимнее время. А в следующем примере (листинг 2.20) мы увидим и разницу в производительности.

Листинг 2.20, Измерение производительности двух свойств

Измеряем производительность для UtsNow DateTime dt = DateTime.UtcNow; Stopwatch sw = new Stopwatch(); for (int 1=0; 1 < 10; i++) { sw.Start 0 ;

for (int j = 0; j < 100000; j++) { if (DateTime.UtcNow == dt) {

/* do action */

1 is tBoxl. Items-Add ( H:rrati: + dt. ToString ( H :rran )) ; listBoxl.Items.Add( HH:rran: + dt.ToString( HH:mm )); listBoxl.Items.Add( HH:mm:ss: + dt.ToString( HH:mm: ss )); listBoxl.Items.Add( h:mm tt: + dt.ToString( h:mm tt )); listBoxl.Items.Add( hh:mm tt: + dt.ToString( hh:mm tt ));



MessageBox.Show(sw.ElapsedTicks.ToString о) ;

Аналогичная проверка производительности для Now DateTime dt = DateTime.Now; Stopwatch sw = new Stopwatch(); for (int i = 0; i < 10; i++) { sw.StartO;

for (int j = 0; j < 100000; j++) { if (DateTime.Now == dt) {

/* do action */

MessageBox.Show(sw.ElapsedTicks.ToString 0);

Запустите пример, чтобы проверить разницу в производительности. Нужно просто заменить вызов utcNow на вызовы Now, чтобы получить результат для местного времени. Вы увидите, что, действительно, метод utcNow работает быстрее, чем метод Now.

Сложить и вычесть временной интервал из дат

Для сложения или вычитания какого-нибудь временного интервала можно использовать многочисленные методы с приставкой Add. Например, с помощью метода AddDays МОЖНО добавить или убавить заданное число дней из выбранной даты (листинг 2.21).

\ Листинг 2.21. Добавление 7 дней к текущей дате

DateTime curdate = DateTime.Now; Прибавляем семь дней к текущей дате DateTime mydate = curdate.AddDays(7) ; MessageBox.Show(mydate.ToShortDateString() ;



Метод DateDiff

Программисты на Visual Basic имеют в своем арсенале функцию DateDiff, которая была еще в Visual Basic 6.0. Никто нам не мешает создать ссылку на сборку Microsoft.VisualBasic.dll и воспользоваться этой функцией в своих целях. В меню Project выбираем пункт Add Reference и в диалоговом окне ищем элемент Microsoft.VisualBasic.dll. Далее в редакторе кода импортируем пространство имен Microsoft.VisualBasic и пишем следующий код (листинг 2.22).

\ Листинг 2.22. Вычисляем количество дней между датами с помощью функции ; Visual Basic DateDiff

using Microsoft.VisualBasic;

private void butDateDiffVB Click(object sender, EventArgs e) {

DateTime datel = new DateTime(1945, 5, 9); Первая дата DateTime date2 = new DateTime(2007, 8, 21); Вторая дата

Вычисляем разницу в днях при помощи перечисления Datelnterval.Day long diff = DateAndTime.DateDiff(Datelnterval.Day, datel, date2, FirstDayOfWeek.Monday, FirstWeekOfYear.System);

Выводим результат в заголовке формы this.Text = diff .ToStringO ;

Второй способ - собственный метод DateDiff

Среди программистов С# использовать пространство имен VisualBasic не

принято. Чувство собственного достоинства не позволяет им опускаться до языка для начинающих ©. Ладно, напишем свой собственный метод DaysDiff, который ВЫЧИСЛИТ разницу между датами при помощи метода Subtract (листинг 2.23).

Вычисление разницы между датами

Достаточно распространенная задача в программировании - вычислить число дней между датами. Рассмотрим несколько способов для решения этой проблемы.



1 ... 8 9 10 [ 11 ] 12 13 14 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика