दिनांक-समय C # [बंद] से केवल समय कैसे प्राप्त करें


144

मान लीजिए मेरे पास 6/22/2009 10:00:00 मान है। मैं इस तिथि समय से केवल 10:00 बजे कैसे प्राप्त करूं?


15
क्या यह एक तार या डेटाइम है?
कॉलिन बर्नेट

जवाबों:


202

इसके लिए आपके पास कई विकल्प हैं:

DateTime dt = DateTime.Parse("6/22/2009 07:00:00 AM");

dt.ToString("HH:mm"); // 07:00 // 24 hour clock // hour is always 2 digits
dt.ToString("hh:mm tt"); // 07:00 AM // 12 hour clock // hour is always 2 digits
dt.ToString("H:mm"); // 7:00 // 24 hour clock
dt.ToString("h:mm tt"); // 7:00 AM // 12 hour clock

सहायक लिंक: DateTime.ToString () पैटर्न


16
@MetroSmurf - ओपी, ज़ाहिर है, स्पष्ट नहीं है कि वह क्या करना चाहता है। मेरे पालतू जानवरों में से एक को जल्दी तार करने के लिए जाना है। मेरा एक सहयोगी था जिसने सब कुछ स्ट्रिंग में बदल दिया - यहां तक ​​कि डबल्स आदि। यह एक दुर्घटना होने की प्रतीक्षा कर रहा है। मैं कहूंगा कि वस्तुओं को तब तक कंवर्ट न करें जब तक कि आप मानव को वस्तु दिखाना नहीं चाहते। तब तक वस्तुओं से चिपके रहें।
पौल

1
त्वरित संदर्भ के लिए, ssएक अग्रणी शून्य के साथ सेकंड है और sसेकंड के बिना है
बीवी जूल

अब तक का सर्वश्रेष्ठ उत्तर
Tk1993

76

ए से DateTime, आप उपयोग कर सकते हैं .TimeOfDay- लेकिन यह आपको TimeSpanदिन में समय (10 घंटे) का प्रतिनिधित्व करता है।


या ToString पर प्रारूपण के साथ विशेष मामले ("प्रारूप कोड")
केनी

61

C # में केवल DateTime प्रकार है और इसमें दिनांक और समय दोनों भाग समाहित हैं। यदि आप DateTime के दिनांक भाग की परवाह नहीं करते हैं, तो इसे इस तरह डिफ़ॉल्ट मान पर सेट करें:

DateTime myTime = default(DateTime).Add(myDateTime.TimeOfDay)

इस तरह आप .NET के सभी संस्करणों में सुसंगत हो सकते हैं, भले ही Microsoft आधार तिथि को 1/1/0001 से कुछ और करने के लिए बदल दे।


19
यह स्वीकृत उत्तर होना चाहिए। सवाल डेटटाइम से समय निकालने का था, न कि इसे स्ट्रिंग के रूप में प्रारूपित करने का।
अज़लज़ार

विशेष रूप से, यह ".NET में" नहीं "C #" में है।
रोरी.प. जूल

22

आप DateTime.ToShortTimeString () विधि में देखना चाह सकते हैं ।

साथ ही, डेटटाइम ऑब्जेक्ट पर कई अन्य तरीके और गुण हैं जो आपको किसी भी तरह से दिनांक या समय बनाने में मदद कर सकते हैं। बस प्रलेखन पर एक नज़र डालें।


+1 यह सबसे साफ समाधान है, यदि आप समय उत्पादन के स्थानीयकरण की आवश्यकता के साथ एक अंतरराष्ट्रीय वातावरण में चल रहे हैं, क्योंकि यह उस समय को लौटाता है जिसमें वर्तमान प्रणाली को सेट किया गया है।
एगटन


6

ऐसा करने के विभिन्न तरीके हैं। आप DateTime.Now.ToLongTimeString()स्ट्रिंग प्रारूप में केवल समय का उपयोग कर सकते हैं ।


आप शायद के DateTime.ToLongTimeString()बजाय मतलब था DateTime.Now.ToLongTimeString()। इस धागे की उम्र को देखते हुए, इसे फिर से जीवित करने के लिए सबसे अच्छा नहीं जब तक कि प्रतिक्रिया पिछले उत्तरों पर महत्वपूर्ण सुधार में योगदान न करे।
लीह

5

आप बस लिख सकते हैं

string time = dateTimeObect.ToString("HH:mm");

4
यह 4 वर्षों से पहले ही सबमिट की गई चीज़ों के लिए बिल्कुल कुछ नहीं जोड़ता है!
पौल

5

आप इसका उपयोग कर सकते हैं

lblTime.Text = DateTime.Now.TimeOfDay.ToString(); 

यह मिलीसेकंड मूल्य के साथ रीयलटाइम है और यह केवल समय पर सेट होता है।


TimeOfDay एक अच्छा तरीका है, लेकिन यह माइलेजसेकंड हिस्से को भी लाता है, आपको अपना समय मानक प्रकार के साथ प्रारूपित करने की आवश्यकता है।
सजाद्रे

5
DateTime now = DateTime.Now;

now.ToLongDateString();    // Wednesday, January 2, 2019
now.ToLongTimeString();    // 2:33:59 PM
now.ToShortDateString();   // 1/2/2019
now.ToShortTimeString();   // 2:16 PM
now.ToString();            // 1/2/2019 2:33:59 PM

4

यह मेरे लिए काम करता है। मुझे इसका पता तब चला जब मुझे डेटटाइम के साथ काम करना था। केवल डेट पार्ट पाने के लिए।

var wholeDate = DateTime.Parse("6/22/2009 10:00:00 AM");
var time = wholeDate - wholeDate.Date;

3

आप ToString("T")लंबे समय तक या ToString("t")कम समय के लिए उपयोग कर सकते हैं ।


2

यदि आप ग्रिडव्यू का उपयोग कर रहे हैं तो आप केवल DataFormatString="{0:t}" उदाहरण के साथ समय दिखा सकते हैं :

    By bind the value:-
<asp:Label ID="lblreg" runat="server" Text='<%#Eval("Registration_Time ", "{0:t}") %>'></asp:Label>

By bound filed:-
<asp:BoundField DataField=" Registration_Time" HeaderText="Brithday" SortExpression=" Registration Time " DataFormatString="{0:t}"/>

1

यदि आप समय की तुलना करना चाहते हैं, और तारीखों की नहीं, तो आपके पास एक मानक तुलना तिथि या आपके द्वारा उपयोग की जाने वाली तिथि से मेल हो सकती है, जैसे कि ...

DateTime time = DateTime.Parse("6/22/2009 10:00AM");
DateTime compare = DateTime.Parse(time.ToShortDateString() + " 2:00PM");
bool greater = (time > compare);

इसके लिए बेहतर तरीके हो सकते हैं, लेकिन आपकी तिथियां मेल खाती रहती हैं।


1

आपको डेटटाइम काइंड के लिए भी खाते की आवश्यकता है।

public static DateTime GetTime(this DateTime d)
{
    return new DateTime(d.TimeOfDay.Ticks, d.Kind);
}

इस प्रश्न का उत्तर देने का कोई मतलब नहीं है, यह 9 साल पहले पूछा गया था। साथ ही इस सवाल के कई अच्छे जवाब पहले से ही हैं।
बेंसभातनोम

आप समय नहीं लौटा रहे हैं। आपको अपने उत्तर की समीक्षा करनी चाहिए
येपाकाई

@Yepeekai .NET में कोई टाइम क्लास नहीं है। तो कोई दिनांक भाग के साथ कोई दिनांक समय आवृत्ति आपके द्वारा किए जा सकने वाले विकल्पों में से एक है। आप एक स्ट्रिंग भी लौटा सकते हैं लेकिन आप उसे डेटटाइम ऑपरेशन में उपयोग कर सकते हैं। मुझे लगता है कि आप एक TimeSpan पर भी विचार कर सकते हैं।
user3720899

imo "नई DateTime (d.TimeOfDay.Ticks)" अब तक का सबसे साफ जवाब है
Fabianus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.