2012-04-23 11 views
45

मैं टाइम्स पैन को डेटाटाइम में कनवर्ट करना चाहता हूं। मैं यह कैसे कर सकता हूँ?डेटस्पेन टू डेटटाइम रूपांतरण

DateTime dt; 
TimeSpan ts="XXX"; 

//We can covnert 'ts' to 'dt' like this: 

dt= Convert.ToDateTime(ts.ToString()); 

वहाँ यह करने के लिए किसी भी अन्य रास्ता नहीं है:

मैं गूगल पर एक विधि पाया?

+4

आप एक प्रारंभ बिंदु (जो आप की आवश्यकता होगी) है, तो बस समयावधि आरंभ तिथि को बढ़ाते हैं। – leppie

+0

मेरे पास स्टार्टटाइम नहीं है। जो एपीआई उजागर किया गया है वह केवल डेटटाइम – Raghav55

+2

का समर्थन करता है यदि आपके पास स्टार्ट- या एंड-पॉइंट नहीं है, तो आप जो करने की कोशिश कर रहे हैं वह गैरकानूनी है। – leppie

उत्तर

74

टाइमस्पेन को डेटटाइम में कनवर्ट करना बहुत तार्किक नहीं है। समझने की कोशिश करें कि लीपी ने ऊपर क्या कहा था। टाइमस्पैन एक अवधि है 6 दिन 5 घंटे 40 मिनट। यह एक तारीख नहीं है। अगर मैं 6 दिन कहता हूं; क्या आप इससे एक तारीख घटा सकते हैं? जवाब तब तक नहीं है जब तक आपके पास एक संदर्भ तिथि न हो।

तो यदि आप टाइमस्पेन को डेटटाइम में कनवर्ट करना चाहते हैं तो आपको संदर्भ दिनांक की आवश्यकता है। 6 दिन & कब से 5 घंटे? तो आप इस तरह कुछ लिख सकते हैं:

DateTime dt = new DateTime(2012, 01, 01); 
TimeSpan ts = new TimeSpan(1, 0, 0, 0, 0); 
dt = dt + ts; 
+1

आपका उत्तर सही है और मैं आपको धन्यवाद देता हूं ... लेकिन टाइमस्पेन को डेटटाइम में कनवर्ट करना _can_ करना एक तार्किक, सार्थक काम होना चाहिए। उदाहरण के लिए, एंटिटी फ्रेमवर्क टाइमस्पेन में टीएसक्यूएल टाइम टाइप (जो समय-समय पर) है - मध्यरात्रि के बाद की अवधि के रूप में। मान को प्रारूपित करने के लिए, मैं इसे डेटटाइम के रूप में चाहता हूं, इसलिए मैं अपनी फॉर्मेट विधियों में से एक का उपयोग कर सकता हूं जिसमें दिनांक भाग शामिल नहीं है ... शायद ईएफ को इसके बजाय डेटटाइम का उपयोग करना चाहिए, लेकिन मुझे लगता है कि मध्यरात्रि के बाद से टाइमस्पेन के इलाज के लिए कम से कम कुछ हद तक उचित है और इसके अलावा मैं ईएफ व्यवहार नहीं बदल सकता। – steve

+1

मैं डेटटाइम का उपयोग कर रहा हूं। आज + टी को बदलने के लिए, फिर यदि आप प्रदर्शित करने के लिए समय प्रारूपित करना चाहते हैं, तो यह अच्छा लगेगा – zquanghoangz

+0

बस ts + dt की कोशिश की और "+ ऑपरेटर लागू नहीं किया जा सकता" तो सावधान रहें। योग कम्यूटिव नहीं है। – Michal

7

आपको उपयोगी होने के लिए संदर्भ संदर्भ की आवश्यकता है।

एक उदाहरण http://msdn.microsoft.com/en-us/library/system.datetime.add.aspx

// Calculate what day of the week is 36 days from this instant. 
System.DateTime today = System.DateTime.Now; 
System.TimeSpan duration = new System.TimeSpan(36, 0, 0, 0); 
System.DateTime answer = today.Add(duration); 
System.Console.WriteLine("{0:dddd}", answer); 
+0

एक ग्रिड में प्रदर्शित होने वाले डेटाबेस से समय मान लौटने पर बहुत उपयोगी फ़ंक्शन! – gchq

25

जबकि चयनित जवाब सख्ती से सही है से, मेरा मानना ​​है कि मैं समझता हूँ कि क्या ओपी पर यहां पहुंचने के लिए के रूप में मैं एक ऐसी ही समस्या हुई कोशिश कर रहा है।

मेरे पास टाइमस्पेन था जिसे मैं ग्रिड कंट्रोल (जैसे एचएच: एमएम) में प्रदर्शित करना चाहता था लेकिन ग्रिड टाइमस्पेन, केवल डेटटाइम को समझ में नहीं आया। ओपी का एक समान परिदृश्य है जहां केवल टाइमस्पेन प्रासंगिक हिस्सा है लेकिन डेटटाइम संदर्भ बिंदु जोड़ने की आवश्यकता पर विचार नहीं किया गया है।

तो, जैसा ऊपर बताया गया है, मैंने बस डेटटाइम जोड़ा। मिनवैल्यू (हालांकि कोई भी तारीख करेगा) जिसे बाद में ग्रिड द्वारा अनदेखा किया जाता है जब यह परिणामस्वरूप दिनांक के समय के रूप में समय-समय पर प्रस्तुत करता है।

+0

यह एक चार्ट में छोड़कर, बिल्कुल मेरा उपयोग मामला था। मुझे एक्स अक्ष में विलुप्त समय दिखाने की ज़रूरत थी। –

-3

उपरोक्त सभी के साथ एक समस्या यह है कि रूपांतरण टाइमस्पेन में निर्दिष्ट दिनों की गलत संख्या देता है।
उपरोक्त का उपयोग करके, नीचे 3 लौटाता है और नहीं 2.

टाइमस्पैन तर्कों में 2 दिनों को संरक्षित करने और उन्हें डेटटाइम दिवस के रूप में वापस लाने के विचारों पर विचार?

public void should_return_totaldays() 
{ 
    _ts = new TimeSpan(2, 1, 30, 10); 
    var format = "dd"; 
    var returnedVal = _ts.ToString(format); 
    Assert.That(returnedVal, Is.EqualTo("2")); //returns 3 not 2 
} 
+2

"dd" प्रारूप का उपयोग करते समय अपेक्षित परिणाम "02" होगा। – Joe

+1

आपका कोड चलाते समय वास्तविक परिणाम "02" है। एकमात्र रिमोट स्पष्टीकरण मैं सोच सकता हूं कि _ts को टाइमस्पेन के रूप में परिभाषित नहीं किया गया है (आप इसे अपने स्निपिट में घोषित नहीं करते हैं) लेकिन कोड में आपकी टिप्पणी गलत है। जब _ts को टाइमस्पेन के रूप में घोषित किया जाता है, तो यह अवधि के दिनों के घटक के लिए सही मान देता है। – Mike

-4

पहले, समयावधि एक स्ट्रिंग के लिए तो दिनांक समय के लिए वापस एक स्ट्रिंग के लिए कनवर्ट करते हैं, है, तो:

Convert.ToDateTime(timespan.SelectedTime.ToString()).ToShortTimeString(); 
+4

क्या यह वही बात नहीं है जिसे ओपी ने सुझाव दिया था? वह पहले स्ट्रिंग में कनवर्ट करने के अलावा अन्य तरीकों के लिए पूछ रहा था। – Joe

+0

चयनित समय मौजूद नहीं है – MiBol

3

TimeSpan एक ताजा दिनांक समय में जोड़ा जा सकता इस लक्ष्य को हासिल करने के लिए।

TimeSpan ts="XXX"; 
DateTime dt = new DateTime() + ts; 

लेकिन जैसा कि पहले उल्लेख किया गया है, यह वैध प्रारंभ तिथि के बिना कड़ाई से तार्किक नहीं है। मुझे एक उपयोग-मामले का सामना करना पड़ा जहां मुझे केवल समय पहलू की आवश्यकता थी। जब तक तर्क सही होता है तब तक ठीक काम करेगा।

-3

एक आसान विधि, उपयोग टिक्स:

new DateTime((DateTime.Now - DateTime.Now.AddHours(-1.55)).Ticks).ToString("HH:mm:ss:fff") 

इस समारोह आप केवल एक datagrid या लेबल में समय मूल्य दिखाने की जरूरत है, तो आप एक तिथि (दिन/माह/वर्ष के बिना)

+1

ओपी एक टिमपैन को डेटटाइम में कनवर्ट करना चाहता था, आपका उत्तर उस पते को संबोधित नहीं करता है। – Mike

+0

टीआईपी: यदि आप 'डेटटाइम' समय भाग चाहते हैं, तो बस '.TimeOfDay' करें। दिनांक भाग के समान, ' .डेट'। – auhmaan

0

दे देंगे इसी तरह, सबसे अच्छा तरीका डेटाटाइम डेटाटाइप में सीधे समय में परिवर्तित होता है।

का चयन करें CONVERT (दिनांक, myTimeField) myTimeField के रूप में Table1

से
0
var StartTime = new DateTime(item.StartTime.Ticks); 
संबंधित मुद्दे