Partager via


Comment : afficher le composant « millisecondes » des valeurs de date et d'heure

Les méthodes de date et d'heure par défaut, telles que DateTime.ToString(), incluent les heures, minutes et secondes d'une valeur d'heure, mais excluent son composant « millisecondes ». Cette rubrique indique comment inclure le composant « millisecondes » d'une date/heure dans des chaînes de date et d'heure mises en forme.

Pour afficher le composant « millisecondes » d'une valeur DateTime

  1. Si vous utilisez la représentation sous forme de chaîne d'une date, convertissez-la en une valeur DateTime ou DateTimeOffset à l'aide de la méthode statique DateTime.Parse(String) ou DateTimeOffset.Parse(String).

  2. Pour extraire la représentation sous forme de chaîne du composant « millisecondes » d'une heure, appelez la méthode DateTime.ToString(String) ou ToString de la valeur de date et d'heure et passez le modèle de format personnalisé fff ou FFF seul ou avec d'autres spécificateurs de format personnalisés comme paramètre format.

Exemple

L'exemple affiche le composant « millisecondes » des valeurs DateTime et DateTimeOffset sur la console, seul et dans une chaîne de date et d'heure plus longue.

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
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

Le modèle de format fff inclut tous les zéros de fin dans la valeur en millisecondes. Le modèle de format FFF les supprime. La différence est illustrée dans l'exemple suivant.

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      
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      

Lorsque vous définissez un spécificateur de format personnalisé complet qui inclut le composant « milliseconde » d'une date/heure, il se peut que le format codé en dur défini ne corresponde pas à la disposition des éléments d'heure dans la culture actuelle de l'application. Dans ce cas, il est conseillé de récupérer l'un des modèles d'affichage de date et d'heure définis par l'objet DateTimeFormatInfo de la culture actuelle et d'y inclure les millisecondes. L'exemple illustre également cette approche. Il récupère le modèle de date et d'heure complet de la culture actuelle à partir de la propriété DateTimeFormatInfo.FullDateTimePattern, puis insère le modèle personnalisé .ffff après son deuxième modèle. Notez que l'exemple utilise une expression régulière permettant d'effectuer cette opération dans un seul appel de méthode.

Vous pouvez également utiliser un spécificateur de format personnalisé pour afficher une partie fractionnaire de secondes autre que les millisecondes. Par exemple, le spécificateur de format personnalisé f ou F affiche les dixièmes de seconde, ff ou FF affiche les centièmes de seconde et ffff ou FFFF affiche les dix millièmes de seconde. Les parties fractionnaires d'une milliseconde sont tronquées au lieu d'être arrondies dans la chaîne retournée. Ces spécificateurs de format sont utilisés dans l'exemple suivant.

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
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
RemarqueRemarque

Il est possible d'afficher des unités fractionnaires de seconde très petites, telles que les dix ou cent millièmes de seconde.Toutefois, ces valeurs ne sont pas toujours explicites.La précision des valeurs de date et d'heure dépend de la résolution de l'horloge système.Dans les systèmes d'exploitation Windows NT 3.5 et versions ultérieures, ainsi que dans Windows Vista, la résolution de l'horloge est d'environ 10-15 millisecondes.

Compilation du code

Compilez le code sur la ligne de commande à l'aide de csc.exe ou vb.exe. Pour compiler le code dans Visual Studio, placez-le dans un modèle de projet d'application console.

Voir aussi

Référence

DateTimeFormatInfo

Concepts

Chaînes de format de date et d'heure personnalisées