কম্পিউটার টিউটোরিয়াল

C#-এ DateTime.ToFileTime() মেথড: DateTime থেকে উইন্ডোজ ফাইল টাইম


C#-এ DateTime.ToFileTime() মেথডটি বর্তমান DateTime অবজেক্টের মানকে উইন্ডোজ ফাইল টাইম (Windows file time) ফরম্যাটে রূপান্তর করে। উইন্ডোজ ফাইল টাইম হলো ১৬০১ সালের ১ জানুয়ারি ০০:০০:০০ UTC থেকে ১০০-ন্যানোসেকেন্ড ইন্টারভালের সংখ্যা।

সিনট্যাক্স (Syntax)

public long ToFileTime();

উদাহরণ ১: বর্তমান সময় (DateTime.Now) থেকে ফাইল টাইম

using System;

public class Demo
{
    public static void Main()
    {
        DateTime d = DateTime.Now;
        Console.WriteLine("Date = {0}", d);
        
        long res = d.ToFileTime();
        Console.WriteLine("Windows file time = {0}", res);
    }
}

আউটপুট (উদাহরণ)

Date = 10/16/2019 8:17:26 AM
Windows file time = 132156874462559390

উদাহরণ ২: নির্দিষ্ট তারিখ থেকে ফাইল টাইম

using System;

public class Demo
{
    public static void Main()
    {
        DateTime d = new DateTime(2019, 05, 10, 6, 10, 25);
        Console.WriteLine("Date = {0}", d);
        
        long res = d.ToFileTime();
        Console.WriteLine("Windows file time = {0}", res);
    }
}

আউটপুট

Date = 5/10/2019 6:10:25 AM
Windows file time = 132019422250000000

ToFileTime() vs ToFileTimeUtc()

মেথডইনপুট Kindআউটপুট
ToFileTime()Local / Unspecifiedলোকাল টাইম ভিত্তিক ফাইল টাইম
ToFileTimeUtc()UTC / UnspecifiedUTC ভিত্তিক ফাইল টাইম

উদাহরণ: পার্থক্য দেখা

using System;

public class Demo
{
    public static void Main()
    {
        // একই মুহূর্ত, দুটি Kind
        DateTime local = new DateTime(2023, 1, 1, 12, 0, 0, DateTimeKind.Local);
        DateTime utc = new DateTime(2023, 1, 1, 12, 0, 0, DateTimeKind.Utc);
        
        Console.WriteLine($"Local DateTime: {local}");
        Console.WriteLine($"UTC DateTime: {utc}");
        Console.WriteLine();
        Console.WriteLine($"Local.ToFileTime(): {local.ToFileTime()}");
        Console.WriteLine($"UTC.ToFileTimeUtc(): {utc.ToFileTimeUtc()}");
        Console.WriteLine($"Local.ToFileTimeUtc(): {local.ToFileTimeUtc()}"); // কনভার্ট করে UTC-এ
    }
}

উইন্ডোজ ফাইল টাইমের ব্যবহার ক্ষেত্র

  • NTFS ফাইল সিস্টেমে ফাইল মেটাডেটা (CreationTime, LastWriteTime, LastAccessTime)
  • Win32 API কলস (GetFileTime, SetFileTime)
  • ফাইল সিস্টেম স্ন্যাপশট এবং ব্যাকআপ সফ্টওয়্যার
  • ক্রস-প্ল্যাটফর্ম ফাইল সিঙ্ক্রোনাইজেশন

প্রয়োগিক উদাহরণ: ফাইল টাইম সেট করা

using System;
using System.IO;
using System.Runtime.InteropServices;

public class FileTimeDemo
{
    [DllImport("kernel32.dll", SetLastError = true)]
    static extern bool SetFileTime(IntPtr hFile, ref long lpCreationTime, ref long lpLastAccessTime, ref long lpLastWriteTime);
    
    public static void Main()
    {
        string filePath = "test.txt";
        File.WriteAllText(filePath, "Hello");
        
        // ফাইল হ্যান্ডেল পাওয়া
        using (FileStream fs = new FileStream(filePath, FileMode.Open))
        {
            IntPtr handle = fs.SafeFileHandle.DangerousGetHandle();
            
            // নতুন তৈরির সময় (১ ঘণ্টা আগে)
            long newTime = DateTime.Now.AddHours(-1).ToFileTime();
            
            // শুধু লাস্ট রাইট টাইম পরিবর্তন
            long dummy = 0;
            SetFileTime(handle, ref dummy, ref dummy, ref newTime);
        }
        
        Console.WriteLine("Modified LastWriteTime: " + File.GetLastWriteTime(filePath));
    }
}

নোট: DateTime.Kind প্রোপার্টি সঠিকভাবে সেট থাকা জরুরি। Unspecified Kind-কে লোকাল টাইম মনে করা হয়।

  1. C#-এ DateTime.Subtract() মেথড: তারিখ বা টাইমস্প্যান বিয়োগ করা

  2. C#-এ DateTime.AddYears() পদ্ধতি

  3. C#-এ DateTime.AddHours() মেথড

  4. C#-এ DateTime.AddDays() মেথড