C# में DateTime.SpecifyKind() मेथड एक नया DateTime ऑब्जेक्ट बनाता है जिसमें निर्दिष्ट DateTime के समान टिक्स होते हैं लेकिन निर्दिष्ट DateTimeKind मान के साथ नामित होता है (स्थानीय समय, UTC, या न तो)।
सिंटैक्स
public static DateTime SpecifyKind (DateTime d, DateTimeKind kind);
- d: स्रोत DateTime
- kind: DateTimeKind एन्यूमरेशन मान - Local, Utc, या Unspecified
DateTimeKind एन्यूमरेशन
| मान | विवरण | उपयोग |
|---|---|---|
| Unspecified | कोई समय क्षेत्र जानकारी नहीं (डिफ़ॉल्ट) | सामान्य तिथि/समय, केवल तिथि |
| Utc | समन्वित सार्वभौमिक समय | भंडारण, गणना, तुलना |
| Local | स्थानीय सिस्टम समय क्षेत्र | उपयोगकर्ता प्रदर्शन, स्थानीय सिस्टम API |
उदाहरण 1: Local Kind निर्दिष्ट करना
using System;
using System.Globalization;
public class Demo
{
public static void Main()
{
DateTime d = new DateTime(2019, 10, 11, 11, 10, 42);
DateTime res = DateTime.SpecifyKind(d, DateTimeKind.Local);
Console.WriteLine("Kind = " + res.Kind);
}
}
आउटपुट
Kind = Local
उदाहरण 2: Utc Kind निर्दिष्ट करना
using System;
public class Demo
{
public static void Main()
{
DateTime d = new DateTime(2019, 11, 25, 10, 20, 35);
DateTime res = DateTime.SpecifyKind(d, DateTimeKind.Utc);
Console.WriteLine("Kind = " + res.Kind);
}
}
आउटपुट
Kind = Utc
उदाहरण 3: व्यावहारिक उपयोग - पार्सिंग के बाद Kind सेट करना
using System;
using System.Globalization;
public class Demo
{
public static void Main()
{
// स्ट्रिंग पार्सिंग से Unspecified Kind मिलता है
string dateStr = "2023-12-25 10:30:00";
DateTime parsed = DateTime.Parse(dateStr); // Kind = Unspecified
Console.WriteLine("पार्सिंग के बाद Kind: " + parsed.Kind); // Unspecified
// इसे UTC के रूप में व्याख्या करें
DateTime asUtc = DateTime.SpecifyKind(parsed, DateTimeKind.Utc);
Console.WriteLine("UTC के रूप में: " + asUtc); // Kind = Utc
// इसे स्थानीय समय के रूप में व्याख्या करें
DateTime asLocal = DateTime.SpecifyKind(parsed, DateTimeKind.Local);
Console.WriteLine("स्थानीय के रूप में: " + asLocal); // Kind = Local
// अब रूपांतरण काम करते हैं
Console.WriteLine("UTC से स्थानीय: " + asUtc.ToLocalTime());
Console.WriteLine("स्थानीय से UTC: " + asLocal.ToUniversalTime());
}
}
महत्वपूर्ण: SpecifyKind समय परिवर्तित नहीं करता
DateTime original = new DateTime(2023, 1, 1, 12, 0, 0, DateTimeKind.Unspecified);
Console.WriteLine("मूल: " + original + " Kind: " + original.Kind);
DateTime asUtc = DateTime.SpecifyKind(original, DateTimeKind.Utc);
Console.WriteLine("SpecifyKind(Utc): " + asUtc + " Kind: " + asUtc.Kind);
// समय समान रहता है: 12:00, केवल Kind बदलता है
// वास्तविक रूपांतरण के लिए:
DateTime converted = original.ToUniversalTime(); // मानता है मूल स्थानीय है
// या
DateTime converted2 = TimeZoneInfo.ConvertTime(original, TimeZoneInfo.Local, TimeZoneInfo.Utc);
मुख्य बिंदु
- टिक्स नहीं बदलता - केवल Kind मेटाडेटा बदलता है
- नया DateTime ऑब्जेक्ट लौटाता है (मूल अपरिवर्तित रहता है)
- पार्सिंग के बाद Kind सेट करने के लिए आवश्यक (पार्सर Unspecified लौटाता है)
- ToLocalTime()/ToUniversalTime() रूपांतरण के लिए Kind सही होना चाहिए
- सीरियलाइज़ेशन/डिसीरियलाइज़ेशन में Kind संरक्षित करने के लिए उपयोगी