DateTime.FromFileTime(Int64) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Converte o tempo especificado do ficheiro Windows para um tempo 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
Um tempo de ficheiro do Windows expresso em ticks.
Devoluções
Um objeto que representa o equivalente local em tempo da data e hora representadas pelo fileTime parâmetro.
Exceções
fileTime é inferior a 0 ou representa um tempo superior ao DateTime.MaxValue.
Exemplos
O exemplo seguinte demonstra o FromFileTime método.
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
Observações
Um tempo de ficheiro Windows é um valor de 64 bits que representa o número de intervalos de 100 nanossegundos que decorreram desde as 12:00 da meia-noite de 1 de janeiro de 1601 d.C. (d.C.) Tempo Universal Coordenado (UTC). O Windows utiliza um tempo de ficheiro para registar quando uma aplicação cria, acede ou escreve num ficheiro.
O fileTime parâmetro especifica um tempo de ficheiro expresso em ticks de 100 nanossegundos.
A partir da versão 2.0 do .NET Framework, o valor de retorno é um DateTime cuja propriedade Kind é DateTimeKind.Local.
Notas para Chamadores
Normalmente, o FromFileTime(Int64) método restaura um DateTime valor que foi poupado pelo método ToFileTime() . No entanto, os dois valores podem diferir 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 hora das 12:30 no fuso horário do Leste dos EUA for serializado e depois desserializado no fuso horário do Pacífico dos EUA, o valor original das 12:30 é ajustado para as 9:30 para refletir a diferença entre os dois fusos horários.
Se o DateTime valor que está serializado representa uma hora inválida no fuso horário local. Neste caso, o ToFileTime() método ajusta o valor restaurado DateTime para que 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 a 14 de março de 2010, às 2:00 da manhã, quando o horário avança uma hora, para as 3:00 da manhã. Este intervalo de uma hora é um tempo inválido, ou seja, um intervalo de tempo que não existe neste fuso horário. O exemplo seguinte mostra que, quando um tempo que se enquadra neste intervalo é convertido num valor inteiro longo pelo ToFileTime() método e depois restaurado pelo FromFileTime(Int64) método, o valor original é ajustado para se tornar um tempo válido. Você pode determinar se um determinado valor de data e hora pode estar sujeito a modificação passando-o para o método IsInvalidTime(DateTime), como ilustra o exemplo.
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 AMopen 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 AMModule 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