Útmutató: Ezredmásodperc megjelenítése dátum- és időértékekben
Az alapértelmezett dátum- és időformázási módszerek( például DateTime.ToString()az órák, percek és másodpercek) tartalmazzák az időértékeket, de kizárják annak ezredmásodperc-összetevőjét. Ez a cikk bemutatja, hogyan lehet egy dátum és idő ezredmásodperc összetevőjét formázott dátum- és idősztringekbe foglalni.
DateTime-érték ezredmásodpercben megadott összetevőjének megjelenítése
Ha egy dátum sztring-ábrázolásával dolgozik, konvertálja azt egy vagy egy értékké DateTime a statikus DateTime.Parse(String) vagy DateTimeOffset.Parse(String) a metódus DateTimeOffset használatával.
Az idő ezredmásodpercében lévő összetevő sztringképének kinyeréséhez hívja meg a dátum- és időérték vagy ToString -metódus értékétDateTime.ToString(String), és adja meg paraméterként
format
azfff
FFF
egyéni vagy egyéni formátummintát vagy más egyéni formátumjelölőket.
Tipp.
A System.Globalization.NumberFormatInfo.NumberDecimalSeparator tulajdonság az ezredmásodperc elválasztó értékét adja meg.
Példa
A példa egy és egy DateTimeOffset érték ezredmásodpercnyi összetevőjét DateTime jeleníti meg a konzolon, önmagában és egy hosszabb dátum- és idősztringben.
using System.Globalization;
using System.Text.RegularExpressions;
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"));
string fullPattern = DateTimeFormatInfo.CurrentInfo.FullDateTimePattern;
// Create a format similar to .fff but based on the current culture.
string millisecondFormat = $"{NumberFormatInfo.CurrentInfo.NumberDecimalSeparator}fff";
// Append millisecond pattern to current culture's full date time pattern.
fullPattern = Regex.Replace(fullPattern, "(:ss|:s)", $"$1{millisecondFormat}");
// 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"))
Dim fullPattern As String = DateTimeFormatInfo.CurrentInfo.FullDateTimePattern
' Create a format similar to .fff but based on the current culture.
Dim millisecondFormat as String = $"{NumberFormatInfo.CurrentInfo.NumberDecimalSeparator}fff"
' Append millisecond pattern to current culture's full date time pattern.
fullPattern = Regex.Replace(fullPattern, "(:ss|:s)", $"$1{millisecondFormat}")
' 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
A fff
formátumminta tartalmazza az ezredmásodpercben lévő záró nullákat. A FFF
formátumminta letiltja őket. Az alábbi példa a különbséget szemlélteti:
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
Egy dátum és idő ezredmásodpercnyi összetevőjét tartalmazó teljes egyéni formátumkijelölő meghatározásával az a probléma, hogy egy olyan kemény kódolású formátumot határoz meg, amely nem felel meg az alkalmazás jelenlegi kultúrájában lévő időelemek elrendezésének. Egy jobb alternatíva az aktuális kultúra objektuma által definiált dátum- és időmegjelenítési minták egyikének lekérése DateTimeFormatInfo és módosítása ezredmásodpercre. A példa ezt a megközelítést is szemlélteti. Lekéri az aktuális kultúra teljes dátum- és időmintáját a DateTimeFormatInfo.FullDateTimePattern tulajdonságból, majd beszúrja az egyéni mintát fff
az aktuális kultúra ezredmásodperc elválasztójával együtt. A példa egy reguláris kifejezéssel hajtja végre ezt a műveletet egyetlen metódushívásban.
Egyéni formátumkijelölővel másodpercek törtrészét is megjelenítheti az ezredmásodpercen kívül. Az egyéni vagy F
az f
egyéni formátumjelölő például a másodperc tizedét, az ff
FF
egyéni formátumjelölő pedig a másodpercek századát, az ffff
FFFF
egyéni formátumjelölő pedig a másodperc tizedét jeleníti meg. Az ezredmásodperc törtrészei csonkulnak a visszaadott sztringben való lekerekítés helyett. Ezeket a formátumjelölőket a következő példában használjuk:
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
Feljegyzés
Egy másodperc nagyon kis törtrészeit is megjelenítheti, például egy másodperc tízezredét vagy százezredét. Ezek az értékek azonban nem feltétlenül értelmezhetők. A dátum- és időérték pontossága az operációs rendszer órájának felbontásától függ. További információkért tekintse meg az operációs rendszer által használt API-t:
- Windows 7: GetSystemTimeAsFileTime
- Windows 8 és újabb verziók: GetSystemTimePreciseAsFileTime
- Linux és macOS: clock_gettime
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: