2012-01-19 12 views
15

मैंसमयावधि अंतर मूल्य हमेशा सकारात्मक

मेरे कोड यहाँ है समयावधि diff मूल्य हमेशा सकारात्मक कनवर्ट करना चाहते हैं:

TimeSpan lateaftertime = new TimeSpan(); 
lateaftertime = lateafter - Convert.ToDateTime(intime); 

मैं lateaftertime हमेशा सकारात्मक का परिणाम प्राप्त करना चाहते हैं .. कृपया मेरी मदद करो ..

+0

संभावित हैंडल [हैंडल नकारात्मक समय स्पैन] (https://stackoverflow.com/questions/1018643/handle-negative-time-spans) – Michael

उत्तर

1

ठीक है, मुझे लगता है कि आप सी # का उपयोग कर रहे हैं क्योंकि ऐसा लगता है।

TimeSpan वर्ग पर - ऑपरेटर अतिभारित किया गया है, तो तुम सब करने की जरूरत है - के साथ अपने गणना उपसर्ग के रूप में यदि आप एक पूर्णांक पर रूपांतरण प्रदर्शन कर रहे थे तुम करोगी है।

var inTime = "19-Jan-2012 21:00"; 
var lateAfter = Convert.ToDateTime("19-Jan-2012 20:00"); 
TimeSpan lateAfterTime = lateAfter - Convert.ToDateTime(inTime); 

var positiveLateAfterTime = 
    lateAfterTime < TimeSpan.Zero 
    ? 
    -lateAfterTime 
    : 
    lateAfterTime; 

Console.WriteLine(positiveLateAfterTime.ToString()); 
40

आप lateaftertime.Duration() उपयोग कर सकते हैं एक गैर नकारात्मक अवधि पाने के लिए यहाँ कुछ कोड है कि आप एक कंसोल App में चलाया जा सकता है।

+12

ऐसी चीज़ की कोई आवश्यकता नहीं है, केवल 'अवधि() 'का उपयोग करें एक पूर्ण 'टाइमस्पेन' – V4Vendetta

+0

@ वी 4 वेंडेटा: मुझे यह कभी नहीं पता था। हर दिन कुछ सीखो। यह एक बहुत अच्छा दृष्टिकोण है। मैंने अपना जवाब अपडेट कर लिया है। – recursive

+1

अपना जवाब बदलने के बजाय, आपने उसे पोस्ट करने और योग्य मान्यता प्राप्त करने के लिए @ V4Vendetta से पूछा है। यह पूरी तरह से मेरी व्यक्तिगत राय है, लेकिन मुझे लगता है कि यह अनुचित है कि आप उसके उत्तर के लिए उपहास प्राप्त करते हैं। – julealgon

2

आप Math.Abs ​​() इस्तेमाल कर सकते हैं:

 lateaftertime = new TimeSpan(Math.Abs(lateaftertime.Ticks)); 

उपयोगकर्ता V4Vendetta एक टिप्पणी में सही फोन किया था। TimeSpan.Duration प्रॉपर्टी का उपयोग करें, यह हमेशा पूर्ण मान देता है।

संबंधित मुद्दे