दो बार के बीच कितने मिनट की गणना है


86

मेरे पास मेरे आवेदन में एक डेटाग्रिडव्यू है जो प्रारंभ और समापन समय रखता है। मैं इन दो बार के बीच मिनटों की संख्या की गणना करना चाहता हूं। अब तक मुझे मिला है:

var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = TimeSpan.FromMinutes(varTime);

लेकिन अंतिम पंक्ति संकलित नहीं होगी क्योंकि यह कहती है कि मैं Timespan कंस्ट्रक्टर के लिए अवैध तर्क का उपयोग कर रहा हूं। मैंने दो बार के बीच मिनटों की संख्या की गणना करने के तरीके के बारे में काफी शोध किया है, लेकिन मैं थोड़ी ईंट की दीवार से टकरा रहा हूं। क्या कोई मुझे अपना उद्देश्य प्राप्त करने के सर्वोत्तम तरीके पर सलाह दे सकता है।

संपादित करें /

अब मेरा कोड इस प्रकार है:

var varFinish = tsTable.Rows[intCellRow]["Finish Time"];
TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue;
int intMinutes = (int)varTime.TotalMinutes;

लेकिन मुझे दूसरी पंक्ति में एक अमान्य कलाकार मिल रहा है। VarFinish और varValue दोनों समय 10:00 और 8:00 कहते हैं। तो यकीन नहीं है कि वे डेटटाइम टाइप करने के लिए क्यों नहीं होंगे?


यदि varFinish एक स्ट्रिंग है, तो आप किसी स्ट्रिंग को DateTime में नहीं डाल सकते। आपको DateTime.Parse (...) का उपयोग करने की आवश्यकता है। फिर भी, यह आज की तारीख का अर्थ होगा यदि वार्निश में कोई तारीख नहीं है।
— जिम

जवाबों:


160

इसे इस्तेमाल करे

DateTime startTime = varValue
DateTime endTime = varTime

TimeSpan span = endTime.Subtract ( startTime );
Console.WriteLine( "Time Difference (minutes): " + span.TotalMinutes );

संपादित करें: यदि आप 'स्पैन.माइन्यूट्स' की कोशिश कर रहे हैं, तो यह केवल अंतराल के मिनट [0 ~ 59] तक वापस आ जाएगा, इस अंतराल से सभी मिनटों की राशि वापस करने के लिए, बस 'स्पैन का उपयोग करें ।otalMinutes'।


2
यह एक अच्छा जवाब है, लेकिन 0 पर फैला हुआ है। मिनट्स जब दो बार के बीच का अंतर 1 घंटे (यानी 60 मिनट या अधिक) से अधिक होता है
— आसिफ महमूद

6
@MalikAsif। मैंने सिर्फ 61 मिनट की अवधि के साथ यह कोशिश की और मुझे उम्मीद के मुताबिक 1 घंटा और 1 मिनट का समय मिला। यदि स्पैन ठीक 60 मिनट था, तो हाँ, मिनट शून्य होंगे। क्या आप सोच रहे थे TotalMinutes()?
— जिम

17
सच नहीं। span.Minutesएक नंबर देता है [0..59]। span.TotalMinutesइसके बजाय का उपयोग करें
— Sten Petrov

2
यह स्वीकृत उत्तर नहीं होना चाहिए। अन्य टिप्पणियों के अनुसार, यह प्रश्न को ठीक से हल नहीं करता है।
— tjmoore

2
@tjmoore प्रतिक्रिया के लिए धन्यवाद, मैं आपसे सहमत हूं। मैंने जनवरी 2012 में मूल प्रश्न का उत्तर दिया, जिसके बाद प्रश्न को संपादित किया गया। मुझे इस उत्तर के लिए कभी-कभार नीचे उतरना पड़ता है, शायद इसलिए कि मूल अन-संपादित प्रश्न पूछे जाने के 5 साल बाद अधिकांश लोग उत्तर पढ़ रहे हैं।
— केन

35
double minutes = varTime.TotalMinutes;
int minutesRounded = (int)Math.Round(varTime.TotalMinutes);

TimeSpan.TotalMinutes : इस उदाहरण द्वारा दर्शाए गए कुल मिनट।


2
हाँ TotalMinutes मैं क्या देख रहा था। बहुत बहुत धन्यवाद ^ _ ^
— वाहिद बितार

int minutesRounded = (int) Math.Round (मिनट);
— सागी

9

आपके quesion कोड में आप TimeSpan.FromMinutesगलत तरीके से उपयोग कर रहे हैं । कृपया TimeSpan.FromMinute के लिए MSDN दस्तावेज़ीकरण देखें , जो निम्नलिखित विधि हस्ताक्षर देता है:

public static TimeSpan FromMinutes(double value)

इसलिए, निम्न कोड संकलन नहीं करेगा

var intMinutes = TimeSpan.FromMinutes(varTime); // won't compile

इसके बजाय, आप इस अंकगणित को करने के लिए TimeSpan.TotalMinutes संपत्ति का उपयोग कर सकते हैं । उदाहरण के लिए:

TimeSpan varTime = (DateTime)varFinish - (DateTime)varValue; 
double fractionalMinutes = varTime.TotalMinutes;
int wholeMinutes = (int)fractionalMinutes;


1

यदि एंडटाइम और स्टार्टटाइम के बीच का अंतर 60 मिनट से अधिक या बराबर है , तो कथन: endTime.Subtract(startTime).Minutes;हमेशा वापस आ जाएगा (minutesDifference % 60)। जाहिर है कि जो वांछित नहीं है जब हम केवल मिनटों के बारे में बात कर रहे हैं (घंटों यहां नहीं)।
यदि आप प्राप्त करना चाहते हैं तो यहां कुछ तरीके दिए गए हैं total number of minutes(विभिन्न टाइपकास्ट में):

// Default value that is returned is of type *double* 
double double_minutes = endTime.Subtract(startTime).TotalMinutes; 
int integer_minutes = (int)endTime.Subtract(startTime).TotalMinutes; 
long long_minutes = (long)endTime.Subtract(startTime).TotalMinutes; 
string string_minutes = (string)endTime.Subtract(startTime).TotalMinutes; 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.