2010-09-08 19 views

उत्तर

23
int totalSeconds = 222; 
int seconds = totalSeconds % 60; 
int minutes = totalSeconds/60; 
string time = minutes + ":" + seconds; 
+8

यह 125 सेकंड को "2: 5" के रूप में प्रारूपित करेगा जबकि I * संदिग्ध * 2:05 अधिक उपयुक्त होगा। –

+1

हाँ, स्ट्रिंग को सिंगल अंक संख्याओं के लिए सेकेंड को अग्रणी शून्य देने के लिए नहीं बनाया गया है, इसलिए मैं ऐसा करूँगा: स्ट्रिंग टाइम = (कुल सेकेंड/60)। टॉस्ट्रिंग() + ":" + (कुल सेकेंड% 60) .ToString ("00"); –

1
var seconds = 60; 
//10,000 ticks in a millisecond 
var ticks = seconds*10000*1000; 
DateTime dt = new DateTime(ticks); 
dt.ToString("mm:ss"); 
+0

यह अभी भी काम करता है जब वहाँ घंटे हो सकता है? जैसे। 3700sec 1h 1min 40sec हैं। क्या यह 61:40 के बजाय 1:40 वापस नहीं आएगा? –

+0

हां यह डेटटाइम संरचना के घंटों, दिन और प्रत्येक सदस्य के साथ काम करेगा। इसे स्वयं आज़माएं;) –

+0

कोड के साथ कुछ स्पष्टीकरण जोड़ना यह उत्तर बेहतर होगा। – Thom

2

सरल गणित। एक मिनट में 60 सेकंड।

int mins = totalseconds/60; 
int secs = totalseconds % 60; 

Console.Writeline(string.Format("{0}:{1}", mins, secs)); 
6

कुछ इस तरह:

string minSec = string.Format("{0}:{1:00}", seconds/60, seconds % 60); 

ध्यान दें कि जो कुछ ही सेकंड सुनिश्चित करेगा हमेशा दो अंक है, उदा के रूप में प्रदर्शित कर रहे हैं 125 सेकंड के लिए "2:05"। मिनटों को वर्तमान में उसी तरह से इलाज नहीं किया जाता है, लेकिन निश्चित रूप से वे हो सकते हैं।

यह नकारात्मक संख्याओं के साथ अच्छी तरह से सौदा नहीं करता है। यदि आपके सेकंड नकारात्मक हो सकते हैं, तो आप इस तरह कुछ चाहते हैं:

string minSec = string.Format("{0}:{1:00}", seconds/60, 
           (Math.Abs(seconds)) % 60); 

अंत में, क्या आपके पास हमेशा एक घंटे से भी कम समय होगा? जब आप वास्तव में "1:20:00" का अर्थ देते हैं तो यह "80:00" देखने में अजीब लग सकता है।

35

एक बहुमुखी संस्करण TimeSpan इस तरह उपयोग करने के लिए है:

var span = new TimeSpan(0, 0, seconds); //Or TimeSpan.FromSeconds(seconds); (see Jakob C´s answer) 
var yourStr = string.Format("{0}:{1:00}", 
          (int)span.TotalMinutes, 
          span.Seconds); 
15

बस पूर्णता के लिए मुझे ऐसा जवाब TimeSpan का उपयोग कर जोड़ देगा (.NET 4.0 के रूप में काम करता है):

int seconds = 1045; 
var timespan = TimeSpan.FromSeconds(seconds);    
Console.WriteLine(timespan.ToString(@"mm\:ss")); 
+0

+1 मेरे जैसे कन्स्ट्रक्टर का उपयोग करने के बजाय 'फ्रॉमसेकंड्स' के लिए +1। लेकिन आपका कोड संकलित नहीं करता है - '.ToString' का कोई अधिभार नहीं। –

+0

AFAIK, यह अधिभार .NET 4 में जोड़ा गया था: http://msdn.microsoft.com/en-us/library/dd992632.aspx –

+1

आह मेला :) लेकिन एक और समस्या यह है कि यह केवल 5 9 मिनट तक दिखाई देगी।हालांकि, मुझे नहीं पता कि वह रमेश के लिए पर्याप्त होगा या नहीं। –

2

एक वैकल्पिक तरीका उदाहरण के रूप में सेकंड प्रदर्शित करने के लिए "2:05" PadLeft का उपयोग करने के लिए हो सकता है।

string time = minutes.ToString() + ":" + seconds.ToString().PadLeft(2,'0'); 
4
double seconds=125;  
TimeSpan.FromSeconds(seconds).ToString() 

आप दे देंगे: 00:02:05। मेरी समझ के अनुसार यह अंतर्निहित समाधान अधिक एक्स्टेंसिबल है, क्योंकि यह तर्क के किसी भी नलसाजी के बिना आपको घंटे भी दे सकता है।

0

मेरे लिए क्या काम करता है ...

public static string SecondsToMinutes(int seconds) 
{ 
    var ts = new TimeSpan(0, 0, seconds);     
    return new DateTime(ts.Ticks).ToString(seconds >= 3600 ? "hh:mm:ss" : "mm:ss"); 
} 
0

नहीं सख्ती से मूल सवाल का जवाब है, लेकिन इस मामले में किसी को भी (या अपने आप को) में भविष्य गूगल के साथ-साथ मिलीसेकेंड के साथ एक नाव से प्रारूप के लिए इच्छुक से यहां आता है:

float secs = 23.69; 
string m_ss_mmm = string.Format("{0}:{1:00}.{2:000}", (int)secs/60, (int)(secs % 60), (secs - ((int)secs)) * 1000); 

परिणाम:

0:23.690 
संबंधित मुद्दे