Как перевести военное время в стандартное?
как перевести военное время в стандартное по нижеприведенному коду ?
Что я уже пробовал:
DateTime ottimein, ottimeout; DateTime pmtimein, pmtimeout; DateTime amtimein, amtimeout; DateTime extra; amtimein = DateTime.Parse(txt1.Text + "AM"); amtimeout = DateTime.Parse(txt2.Text + "AM"); pmtimein = DateTime.Parse(txt3.Text + "PM"); pmtimeout = DateTime.Parse(txt4.Text + "PM"); ottimein = DateTime.Parse(txt5.Text + "PM"); ottimeout = DateTime.Parse(txt6.Text + "PM"); extra = DateTime.Parse(txtExtra.Text + "AM").AddHours(12); TimeSpan ts = new TimeSpan(0); var am = amtimein; var amout = amtimeout; TimeSpan diff = amout.Subtract(am); var pmin = pmtimein; var pmout = pmtimeout; TimeSpan diffpm = pmtimeout.Subtract(pmtimein); var otin = ottimein; var otout = ottimeout; TimeSpan diffot = ottimeout.Subtract(ottimein); if (diff < ts) { var res = diff + TimeSpan.FromHours(12); var res_s= diffpm; var res_r=diffot; var _s = res + res_s + res_r; txtm.Text = res.ToString(@"hh\mm"); } else { var res = diff; var res_s = diffpm; var res_r = diffot; var _s = res + res_s + res_r; txtm.Text = res.ToString(@"hh\mm"); }
Jochen Arndt
Я думаю, вы имеете в виду время Z(ulu), которое просто UTC (без часового пояса и DST).
Поэтому вы должны использовать ключевое слово " UTC " при поиске, чтобы найти то, что вам нужно, потому что ваш фрагмент кода не содержит никакой информации об используемом формате datetime.
Но есть общее правило при использовании datetimes:
Храните их, используя двоичные даты в UTC, и делайте как можно больше обработки с этими двоичными значениями. Только при отображении конверсии с использованием местного часового пояса и формата. Аналогично для пользовательского ввода, где строковый ввод должен быть в известном формате и известном часовом поясе (обычно это локальные настройки). Если возможно, используйте существующие элементы управления выбора, которые возвращают значения уже в двоичном формате.