Retrieving File Last Write Time in UTC with C#'s `File.GetLastWriteTimeUtc()`

Learn how to use C#'s `File.GetLastWriteTimeUtc()` method to retrieve a file's last write time in Coordinated Universal Time (UTC). This tutorial provides a clear explanation and examples, highlighting the importance of using UTC to avoid time zone-related issues when working with file timestamps.



Using C#'s `File.GetLastWriteTimeUtc()` Method

The C# `File.GetLastWriteTimeUtc()` method retrieves the last write time of a file in Coordinated Universal Time (UTC). This is helpful for tracking file modifications and avoiding time zone discrepancies.

Understanding `File.GetLastWriteTimeUtc()`

This static method, part of the `System.IO.File` class, takes a file path (string) as input and returns a `DateTime` object representing the last write time in UTC. It's crucial to understand that it returns UTC, not local time.

Important Considerations

  • Namespace: `System.IO`
  • Exception Handling: Throws `FileNotFoundException` if the file doesn't exist.
  • Time Zone: Returns UTC; convert to local time using `TimeZoneInfo.ConvertTimeFromUtc()`.
  • Permissions: Requires read permissions for the file's metadata.
  • Precision: Accuracy depends on the file system (e.g., FAT32 has lower precision).
  • External Changes: The last write time can be affected by other processes or threads.

Example Usage


string filePath = @"C:\Reports\report.pdf"; 
DateTime utcLastWriteTime = File.GetLastWriteTimeUtc(filePath);
DateTime localLastWriteTime = TimeZoneInfo.ConvertTimeFromUtc(utcLastWriteTime, TimeZoneInfo.Local);
Console.WriteLine("The file was last written on {0} (local time)", localLastWriteTime);

When to Use `GetLastWriteTimeUtc()`

  • Detecting file changes since the last program run.
  • Verifying report freshness.
  • Identifying manual configuration file edits.
  • File synchronization comparisons.

Example Program: Checking File Age


using System;
using System.IO;

class Program {
    static void Main(string[] args) {
        string filePath = @"C:\example\file.txt";
        // ... (code to get UTC and local times, and check file age) ...
    }
}