|
Программирование >> Автоматически обновляемые приложения
Запустив этот пример, вы увидите, как по-разному можно представить одну и ту же дату, используя различные комбинации (рис. 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). Вычисление разницы между датами Достаточно распространенная задача в программировании - вычислить число дней между датами. Рассмотрим несколько способов для решения этой проблемы.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |