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
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).
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á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.