Sdílet prostřednictvím


Postupy: Zobrazení komponenty milisekund hodnot data a času

Výchozí metody pro formátování hodnot data a času, jako například DateTime.ToString(), obsahují hodiny, minuty a sekundy od příslušné časové hodnoty, ale neobsahují komponentu milisekund. Toto téma ukazuje, jak zahrnout komponentu milisekund do příslušné hodnoty data a času ve formátovaných řetězcích data a času.

Chcete-li zobrazit komponentu milisekund hodnoty Datetime

  1. Pokud pracujete s řetězcovou reprezentací data, převeďte ji na hodnotu DateTime nebo DateTimeOffset pomocí statické metody DateTime.Parse(String) nebo DateTimeOffset.Parse(String).

  2. Pro extrahování řetězcové reprezentace komponenty milisekund volejte metody hodnot data a času DateTime.ToString(String) nebo ToString a předejte vlastní formátovací vzorek fff nebo FFF samostatně nebo s dalšími uživatelskými specifikátory formátu jako je parametr format.

Příklad

Příklad zobrazí komponentu milisekund od DateTime a hodnotu DateTimeOffset do konzoly samostatně i jako součást delšího řetězce data a času.

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

Formátovací vzorek fff zahrnuje všechny koncové nuly v hodnotě milisekund. Vzorek formátu FFF je potlačí. Rozdíl je znázorněn v následujícím příkladu.

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      

Problém s definováním kompletního uživatelského specifikátoru formátu, který zahrnuje komponentu milisekund od příslušného data a času je, že definuje pevně zakódovaný formát, který nemusí odpovídat uspořádání prvků času aktuální jazykové verzi aplikace. Lepší alternativou je získání jednoho ze vzorků zobrazení data a času, které jsou definovány v objektu aktuální jazykové verze DateTimeFormatInfo, a upravit je tak, aby obsahovaly milisekundy. Tento příklad také znázorňuje tento přístup. Načte úplný vzorek data a času pro aktuální jazykovou verzi z vlastnosti DateTimeFormatInfo.FullDateTimePattern a potom vloží vlastní vzorek .ffff po jeho vzorku sekund. Všimněte si, že příklad používá regulární výraz k provedení této operace v rámci jednoho volání metody.

Můžete také použít vlastní specifikátor formátu pro zobrazení jiné části sekundového údaje než jsou milisekundy. Například uživatelský specifikátor formátu f nebo F zobrazí desetiny sekund, uživatelský specifikátor formátu ff nebo FF zobrazí setiny sekundy a uživatelský specifikátor formátu ffff nebo FFFF zobrazí desetitisíciny sekund. Zlomkové části milisekund jsou ve vráceném řetězci zkráceny namísto toho, aby byly zaokrouhleny. Tyto specifikátory formátu se používají v následujícím příkladu.

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
PoznámkaPoznámka

Je možné zobrazit velmi malé zlomkové jednotky sekund, jako například desetitisíciny sekundy nebo stotisíciny sekundy.Tyto hodnoty však nemusí být smysluplné.Přesnost hodnot data a času závisí na rozlišení systémových hodin.V systémech Windows NT 3.5 a novějších a operačních systémech Windows Vista, je rozlišení hodin přibližně 10-15 milisekund.

Probíhá kompilace kódu

Kompilujte kód v příkazovém řádku pomocí csc.exe nebo vb.exe. Pro kompilaci kódu ve Visual Studio, vložte kód do šablony projektu pro konzolové aplikace.

Viz také

Odkaz

DateTimeFormatInfo

Koncepty

Vlastní formátovací řetězce data a času