DateTime.FromFileTime(Int64) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Converte a hora de arquivo do Windows especificada em uma hora local equivalente.
public:
static DateTime FromFileTime(long fileTime);
public static DateTime FromFileTime (long fileTime);
static member FromFileTime : int64 -> DateTime
Public Shared Function FromFileTime (fileTime As Long) As DateTime
Parâmetros
- fileTime
- Int64
Uma hora de arquivo Windows expressada em tiques.
Retornos
Um objeto que representa a hora local equivalente da hora e hora representadas pelo parâmetro fileTime
.
Exceções
fileTime
é menor que 0 ou representa uma hora maior que DateTime.MaxValue.
Exemplos
O exemplo a seguir demonstra o FromFileTime método.
System::TimeSpan FileAge( long fileCreationTime )
{
System::DateTime now = System::DateTime::Now;
try
{
System::DateTime fCreationTime =
System::DateTime::FromFileTime( fileCreationTime );
System::TimeSpan fileAge = now.Subtract( fCreationTime );
return fileAge;
}
catch ( ArgumentOutOfRangeException^ )
{
// fileCreationTime is not valid, so re-throw the exception.
throw;
}
}
open System
let fileAge fileCreationTime =
let now = DateTime.Now
try
let fCreationTime =
DateTime.FromFileTime fileCreationTime
now.Subtract fCreationTime
with :? ArgumentOutOfRangeException ->
// fileCreationTime is not valid, so re-raise the exception.
reraise ()
public System.TimeSpan FileAge(long fileCreationTime) {
System.DateTime now = System.DateTime.Now;
try {
System.DateTime fCreationTime =
System.DateTime.FromFileTime(fileCreationTime);
System.TimeSpan fileAge = now.Subtract(fCreationTime);
return fileAge;
}
catch (ArgumentOutOfRangeException) {
// fileCreationTime is not valid, so re-throw the exception.
throw;
}
}
Public Function FileAge(ByVal fileCreationTime As Long) As System.TimeSpan
Dim now As System.DateTime
now = System.DateTime.Now
Try
Dim fCreationTime As System.DateTime
Dim fAge As System.TimeSpan
fCreationTime = System.DateTime.FromFileTime(fileCreationTime)
fAge = now.Subtract(fCreationTime)
Return fAge
Catch exp As ArgumentOutOfRangeException
' fileCreationTime is not valid, so re-throw the exception.
Throw
End Try
End Function
Comentários
Um tempo de arquivo do Windows é um valor de 64 bits que representa o número de intervalos de 100 nanossegundos decorridos desde a meia-noite de 1º de janeiro de 1601 (C.E.) UTC (Tempo Universal Coordenado). O Windows usa uma hora de arquivo a ser registrada quando um aplicativo cria, acessa ou grava em um arquivo.
O fileTime
parâmetro especifica um tempo de arquivo expresso em tiques de 100 nanossegundos.
Começando com o .NET Framework versão 2.0, o valor retornado é uma DateTime cuja Kind propriedade é DateTimeKind.Local.
Notas aos Chamadores
Normalmente, o FromFileTime(Int64) método restaura um DateTime valor que foi salvo pelo ToFileTime() método . No entanto, os dois valores podem ser diferentes nas seguintes condições:
Se a serialização e desserialização do DateTime valor ocorrerem em fusos horários diferentes. Por exemplo, se um DateTime valor com uma hora de 12h30 no fuso horário do Leste dos EUA for serializado e desserializado no fuso horário do Pacífico dos EUA, o valor original das 12h30 será ajustado para 9h30 para refletir a diferença entre os dois fusos horários.
Se o DateTime valor serializado representar uma hora inválida no fuso horário local. Nesse caso, o ToFileTime() método ajusta o valor restaurado DateTime para que ele represente uma hora válida no fuso horário local.
Por exemplo, a transição do horário padrão para o horário de verão ocorre no fuso horário do Pacífico dos EUA em 14 de março de 2010, às 2:00 da manhã, quando o tempo avança em uma hora, para 3:00 da manhã. Esse intervalo de hora é um tempo inválido, ou seja, um intervalo de tempo que não existe nesse fuso horário. O exemplo a seguir mostra que quando um tempo que se enquadra nesse intervalo é convertido em um valor inteiro longo pelo ToFileTime() método e, em seguida, é restaurado pelo FromFileTime(Int64) método , o valor original é ajustado para se tornar um tempo válido. É possível determinar se um valor de data e hora específico podem estar sujeito à modificação passando-o para o método IsInvalidTime(DateTime), como o exemplo ilustra.
using System; public class Example { public static void Main() { DateTime date1 = new DateTime(2010, 3, 14, 2, 30, 00); Console.WriteLine("Invalid Time: {0}", TimeZoneInfo.Local.IsInvalidTime(date1)); long ft = date1.ToFileTime(); DateTime date2 = DateTime.FromFileTime(ft); Console.WriteLine("{0} -> {1}", date1, date2); } } // The example displays the following output: // Invalid Time: True // 3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
open System let date1 = DateTime(2010, 3, 14, 2, 30, 00) printfn $"Invalid Time: {TimeZoneInfo.Local.IsInvalidTime date1}" let ft = date1.ToFileTime() let date2 = DateTime.FromFileTime ft printfn $"{date1} -> {date2}" // The example displays the following output: // Invalid Time: True // 3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM
Module Example Public Sub Main() Dim date1 As New DateTime(2010, 3, 14, 2, 30, 00) Console.WriteLine("Invalid Time: {0}", TimeZoneInfo.Local.IsInvalidTime(date1)) Dim ft As Long = date1.ToFileTime() Dim date2 As DateTime = DateTime.FromFileTime(ft) Console.WriteLine("{0} -> {1}", date1, date2) End Sub End Module ' The example displays the following output: ' Invalid Time: True ' 3/14/2010 2:30:00 AM -> 3/14/2010 3:30:00 AM