Procedura: visualizzare i millisecondi nei valori data e oraHow to: Display Milliseconds in Date and Time Values

I metodi di formattazione di data e ora predefiniti, ad esempio DateTime.ToString(), includono le ore, i minuti e i secondi di un valore di ora, ma ne escludono il componente dei millisecondi.The default date and time formatting methods, such as DateTime.ToString(), include the hours, minutes, and seconds of a time value but exclude its milliseconds component. Questo argomento descrive come includere un componente millisecondi di una data e un'ora nelle stringhe di data e ora formattate.This topic shows how to include a date and time's millisecond component in formatted date and time strings.

Per visualizzare il componente millisecondi di un valore DateTimeTo display the millisecond component of a DateTime value

  1. Se si usa la rappresentazione di stringa di una data, convertirla in un valore DateTime o DateTimeOffset tramite il metodo statico DateTime.Parse(String) o DateTimeOffset.Parse(String).If you are working with the string representation of a date, convert it to a DateTime or a DateTimeOffset value by using the static DateTime.Parse(String) or DateTimeOffset.Parse(String) method.

  2. Per estrarre la rappresentazione di stringa del componente dei millisecondi di un'ora, chiamare il metodo DateTime.ToString(String) o ToString del valore di data e ora e passare il modello di formato personalizzato fff o FFF da solo o con altri identificatori di formato personalizzato come parametro format.To extract the string representation of a time's millisecond component, call the date and time value's DateTime.ToString(String) or ToString method, and pass the fff or FFF custom format pattern either alone or with other custom format specifiers as the format parameter.

EsempioExample

L'esempio visualizza il componente dei millisecondi di un valore DateTime e di un valore DateTimeOffset alla console, sia da solo sia incluso in una stringa di data e ora più lunga.The example displays the millisecond component of a DateTime and a DateTimeOffset value to the console, both alone and included in a longer date and time string.

using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class MillisecondDisplay
{
   public static void Main()
   {
      string dateString = "7/16/2008 8:32:45.126 AM";
      
      try
      {
         DateTime dateValue = DateTime.Parse(dateString);
         DateTimeOffset dateOffsetValue = DateTimeOffset.Parse(dateString);
   
         // Display Millisecond component alone.
         Console.WriteLine("Millisecond component only: {0}", 
                           dateValue.ToString("fff"));
         Console.WriteLine("Millisecond component only: {0}", 
                           dateOffsetValue.ToString("fff"));
   
         // Display Millisecond component with full date and time.
         Console.WriteLine("Date and Time with Milliseconds: {0}", 
                           dateValue.ToString("MM/dd/yyyy hh:mm:ss.fff tt"));                        
         Console.WriteLine("Date and Time with Milliseconds: {0}", 
                           dateOffsetValue.ToString("MM/dd/yyyy hh:mm:ss.fff tt"));
   
         // Append millisecond pattern to current culture's full date time pattern
         string fullPattern = DateTimeFormatInfo.CurrentInfo.FullDateTimePattern;
         fullPattern = Regex.Replace(fullPattern, "(:ss|:s)", "$1.fff");
         
         // Display Millisecond component with modified full date and time pattern.
         Console.WriteLine("Modified full date time pattern: {0}", 
                           dateValue.ToString(fullPattern));
         Console.WriteLine("Modified full date time pattern: {0}",
                           dateOffsetValue.ToString(fullPattern));
      }
      catch (FormatException)
      {
         Console.WriteLine("Unable to convert {0} to a date.", dateString);
      }
   }
}
// The example displays the following output if the current culture is en-US:
//    Millisecond component only: 126
//    Millisecond component only: 126
//    Date and Time with Milliseconds: 07/16/2008 08:32:45.126 AM
//    Date and Time with Milliseconds: 07/16/2008 08:32:45.126 AM
//    Modified full date time pattern: Wednesday, July 16, 2008 8:32:45.126 AM
//    Modified full date time pattern: Wednesday, July 16, 2008 8:32:45.126 AM
Imports System.Globalization
Imports System.Text.REgularExpressions

Module MillisecondDisplay
   Public Sub Main()

      Dim dateString As String = "7/16/2008 8:32:45.126 AM"
      
      Try
         Dim dateValue As Date = Date.Parse(dateString)
         Dim dateOffsetValue As DateTimeOffset = DateTimeOffset.Parse(dateString)
         
         ' Display Millisecond component alone.
         Console.WriteLine("Millisecond component only: {0}", _
                           dateValue.ToString("fff"))
         Console.WriteLine("Millisecond component only: {0}", _
                           dateOffsetValue.ToString("fff"))
   
         ' Display Millisecond component with full date and time.
         Console.WriteLine("Date and Time with Milliseconds: {0}", _
                           dateValue.ToString("MM/dd/yyyy hh:mm:ss.fff tt"))                        
         Console.WriteLine("Date and Time with Milliseconds: {0}", _
                           dateOffsetValue.ToString("MM/dd/yyyy hh:mm:ss.fff tt"))
   
         ' Append millisecond pattern to current culture's full date time pattern
         Dim fullPattern As String = DateTimeFormatInfo.CurrentInfo.FullDateTimePattern
         fullPattern = Regex.Replace(fullPattern, "(:ss|:s)", "$1.fff")
         
         ' Display Millisecond component with modified full date and time pattern.
         Console.WriteLine("Modified full date time pattern: {0}", _
                           dateValue.ToString(fullPattern))                        
         Console.WriteLine("Modified full date time pattern: {0}", _
                           dateOffsetValue.ToString(fullPattern))
      Catch e As FormatException
         Console.WriteLine("Unable to convert {0} to a date.", dateString)      
      End Try
   End Sub
End Module
' The example displays the following output if the current culture is en-US:
'    Millisecond component only: 126
'    Millisecond component only: 126
'    Date and Time with Milliseconds: 07/16/2008 08:32:45.126 AM
'    Date and Time with Milliseconds: 07/16/2008 08:32:45.126 AM
'    Modified full date time pattern: Wednesday, July 16, 2008 8:32:45.126 AM
'    Modified full date time pattern: Wednesday, July 16, 2008 8:32:45.126 AM

Il modello di formato fff include gli zeri finali nei millisecondi.The fff format pattern includes any trailing zeros in the millisecond value. Il modello di formato FFF li elimina.The FFF format pattern suppresses them. Nell'esempio seguente è illustrata questa differenza.The difference is illustrated in the following example.

DateTime dateValue = new DateTime(2008, 7, 16, 8, 32, 45, 180); 
Console.WriteLine(dateValue.ToString("fff"));    
Console.WriteLine(dateValue.ToString("FFF"));
// The example displays the following output to the console:
//    180
//    18      
Dim dateValue As New Date(2008, 7, 16, 8, 32, 45, 180) 
Console.WriteLIne(dateValue.ToString("fff"))    
Console.WriteLine(dateValue.ToString("FFF"))
' The example displays the following output to the console:
'    180
'    18      

Uno dei problemi della definizione di un identificatore di formato personalizzato completo che include il componente millisecondi di una data e ora è rappresentato dal fatto che l'identificatore definisce un formato hardcoded che potrebbe non corrispondere alla disposizione degli elementi relativi all'ora delle impostazioni cultura correnti dell'applicazione.A problem with defining a complete custom format specifier that includes the millisecond component of a date and time is that it defines a hard-coded format that may not correspond to the arrangement of time elements in the application's current culture. Un'alternativa migliore consiste nel recuperare uno dei modelli di visualizzazione di data e ora definiti dall'oggetto DateTimeFormatInfo delle impostazioni cultura correnti e modificarlo in modo da includere i millisecondi.A better alternative is to retrieve one of the date and time display patterns defined by the current culture's DateTimeFormatInfo object and modify it to include milliseconds. L'esempio illustra anche questo approccio.The example also illustrates this approach. L'esempio recupera il modello di data e ora completo delle impostazioni cultura correnti dalla proprietà DateTimeFormatInfo.FullDateTimePattern e quindi inserisce il modello personalizzato .ffff dopo il modello dei secondi.It retrieves the current culture's full date and time pattern from the DateTimeFormatInfo.FullDateTimePattern property, and then inserts the custom pattern .ffff after its seconds pattern. Si noti che nell'esempio viene usata un'espressione regolare per eseguire questa operazione in una sola chiamata al metodo.Note that the example uses a regular expression to perform this operation in a single method call.

È anche possibile usare un identificatore di formato personalizzato per visualizzare una parte frazionaria di secondi diversa dai millisecondi.You can also use a custom format specifier to display a fractional part of seconds other than milliseconds. Ad esempio, l'identificatore di formato personalizzato f o F visualizza i decimi di secondo, l'identificatore di formato personalizzato ff o FF i centesimi di secondo e l'identificatore di formato personalizzato ffff o FFFF i decimillesimi di secondo.For example, the f or F custom format specifier displays tenths of a second, the ff or FF custom format specifier displays hundredths of a second, and the ffff or FFFF custom format specifier displays ten thousandths of a second. Le parti frazionarie di un millisecondo vengono troncate anziché arrotondate nella stringa restituita.Fractional parts of a millisecond are truncated instead of rounded in the returned string. Questi identificatori di formato vengono usati nell'esempio seguente.These format specifiers are used in the following example.

DateTime dateValue = new DateTime(2008, 7, 16, 8, 32, 45, 180); 
Console.WriteLine("{0} seconds", dateValue.ToString("s.f"));
Console.WriteLine("{0} seconds", dateValue.ToString("s.ff"));      
Console.WriteLine("{0} seconds", dateValue.ToString("s.ffff"));
// The example displays the following output to the console:
//    45.1 seconds
//    45.18 seconds
//    45.1800 seconds
Dim dateValue As New DateTime(2008, 7, 16, 8, 32, 45, 180) 
Console.WriteLine("{0} seconds", dateValue.ToString("s.f"))
Console.WriteLine("{0} seconds", dateValue.ToString("s.ff"))      
Console.WriteLine("{0} seconds", dateValue.ToString("s.ffff"))
' The example displays the following output to the console:
'    45.1 seconds
'    45.18 seconds
'    45.1800 seconds

Nota

È possibile visualizzare piccolissime unità di secondo frazionarie, come decimillesimi di secondo o centomillesimi di secondo.It is possible to display very small fractional units of a second, such as ten thousandths of a second or hundred-thousandths of a second. Questi valori tuttavia potrebbero non essere significativi.However, these values may not be meaningful. La precisione dei valori di data e ora dipende dalla risoluzione del clock di sistema.The precision of date and time values depends on the resolution of the system clock. In Windows NT 3.5 e versioni successive e nei sistemi operativi Windows VistaWindows Vista la risoluzione del clock è di circa 10-15 millisecondi.On Windows NT 3.5 and later, and Windows VistaWindows Vista operating systems, the clock's resolution is approximately 10-15 milliseconds.

Compilazione del codiceCompiling the Code

Compilare il codice nella riga di comando usando csc.exe o vbc.exe.Compile the code at the command line using csc.exe or vb.exe. Per compilare il codice in Visual Studio, inserirlo in un modello di progetto di applicazione console.To compile the code in Visual Studio, put it in a console application project template.

Vedere ancheSee Also

DateTimeFormatInfo
Custom Date and Time Format StringsCustom Date and Time Format Strings