Формат исключения - DateTime и часы - PullRequest
6 голосов
/ 21 июня 2010

Я хочу получить часы от даты и времени.Таким образом, если это 13:00, это будет просто 1, если это 10:00, это будет 10. Так что нет нуля в начале часов 1-9

Так что я попытался сделать это

DateTime test= DateTime.Now;
Console.WriteLine(test.ToString("h"));

Я получил это

Исключение System.FormatException было обработано
Сообщение = Входная строка была в неправильном формате.Источник = mscorlib * +1010 * StackTrace: в System.DateTimeFormat.GetRealFormat (формат струнного, DateTimeFormatInfo dtfi) в System.DateTimeFormat.ExpandPredefinedFormat (String формат, DateTime & DateTime, DateTimeFormatInfo & dtfi, TimeSpan и смещение) в System.DateTimeFormat.Format (DateTime DateTime,Формат строки, DateTimeFormatInfo dtfi, смещение TimeSpan) в System.DateTimeFormat.Format (DateTime dateTime, Формат строки, DateTimeFormatInfo dtfi) в System.DateTime.ToString (формат String) в ConsoleApplication1.Program.Main (String [] args) в C:\ Users \ chobo2 \ Documents \ Visual Studio 2010 \ Projects \ ConsoleApplication1 \ ConsoleApplication1 \ Program.cs: строка 21 в System.AppDomain._nExecuteAssembly (сборка RuntimeAssembly, аргументы String []) в System.AppDomain.ExecuteAssembly (сборка строкFile, сборка Evidence assemblySecurity, String [] args) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () в System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта) в System.Threading.ExecutionContext.Выполнить (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта, Boolean ignoreSyncCtx) в System.Threading.ExecutionContext.Run (Обратный вызов ExecutionContext executeContext, ContextCallback, состояние объекта) в System.Threading.ThreadHelper.ThreadStart ()

1012 *

1 Ответ

14 голосов
/ 21 июня 2010

С MSDN (спецификатор пользовательского формата "h"):

Если спецификатор формата "h" используется без других пользовательских спецификаторов формата, он интерпретируется как стандартный спецификатор формата даты и времени и вызывает исключение FormatException. Дополнительные сведения об использовании одного спецификатора формата см. В разделе «Использование отдельных пользовательских спецификаторов формата» далее в этом разделе.

Вы можете использовать следующее (, как описано в разделе «Использование отдельных пользовательских форматных спецификаторов)»:

Чтобы использовать любой из пользовательских спецификаторов формата даты и времени в качестве единственного спецификатора в строке формата (то есть использовать "d", "f", "F", "g", "h", " H "," K "," m "," M "," s "," t "," y "," z ",": "или" / "спецификатор пользовательского формата самостоятельно), включают пробел перед или после спецификатора, или включать спецификатор формата в процентах ("%") перед единичным пользовательским спецификатором даты и времени.

Итак, вы можете сделать следующее:

DateTime test= DateTime.Now;
Console.WriteLine(test.ToString("{0:%h}")); // From the document, adds precision
Console.WriteLine(test.ToString("%h")); // Will also work
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...