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 / Unspecified | UTC ভিত্তিক ফাইল টাইম |
উদাহরণ: পার্থক্য দেখা
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-কে লোকাল টাইম মনে করা হয়।