2011-10-26 12 views
91

मैं इस समस्या में कई बार आया हूं जिसमें मैं एक ही निर्देशिका में एक ही फ़ाइल के कई संस्करण रखना चाहता हूं। जिस तरह से मैं इसे सी # का उपयोग कर कर रहा हूं, फ़ाइल नाम पर टाइम स्टैंप जोड़कर DateTime.Now.ToString().Replace('/', '-').Replace(':', '.') जैसा कुछ है। क्या ऐसा करने का कोई बेहतर तरीका है?फ़ाइल नाम पर टाइमस्टैम्प संलग्न करें

उत्तर

208

आप DateTime.ToString Method (String)

DateTime.Now.ToString("yyyyMMddHHmmssfff")

या string.Format

string.Format("{0:yyyy-MM-dd_hh-mm-ss-fff}",DateTime.Now) उपयोग कर सकते हैं;

या Interpolated Strings

$"{DateTime.Now:yyyy-MM-dd_hh-mm-ss-fff}"

निम्न कस्टम प्रारूप विनिर्देशक y (वर्ष), एम (माह), घ (दिन), ज (घंटे 12) हैं, एच (घंटे 24) , एम (मिनट), एस (दूसरा), एफ (दूसरा अंश), एफ (दूसरा अंश, पिछला शून्य शून्य छंटनी की जाती है), टी (पीएम या पूर्वाह्न) और जेड (समय क्षेत्र)।

एक्सटेंशन विधि के साथ

उपयोग:

string result = "myfile.txt".AppendTimeStamp(); 
//myfile20130604234625642.txt 

एक्सटेंशन विधि

public static class MyExtensions 
{ 
    public static string AppendTimeStamp(this string fileName) 
    { 
     return string.Concat(
      Path.GetFileNameWithoutExtension(fileName), 
      DateTime.Now.ToString("yyyyMMddHHmmssfff"), 
      Path.GetExtension(fileName) 
      ); 
    } 
} 
+1

मैं जोड़ दिया है 'Path.GetDirectoryName (फ़ाइल का नाम)' पाने के लिए फ़ाइल के लिए पूरा रास्ता। फिर 'पथ के साथ 'string.Concat()' को बदल दिया।संयोजन() 'पूर्ण फ़ाइल नाम प्राप्त करें। – gilu

8

शायद DateTime.Now.Ticks को जोड़ने के बजाय, थोड़ा तेज़ तेज़ है क्योंकि आप 3 तार नहीं बनाएंगे और टिक मूल्य हमेशा अद्वितीय भी होंगे।

11

मैं का उपयोग करना पसंद:

string result = "myFile_" + DateTime.Now.ToFileTime() + ".txt"; 

ToFileTime() क्या करता है?

वर्तमान दिनांक समय वस्तु के मान को Windows फ़ाइल समय में परिवर्तित करता है।

public long ToFileTime()

एक Windows फ़ाइल समय एक 64-बिट मूल्य है कि 100-nanosecond अंतराल की संख्या कि 12:00 आधी रात के बाद से बीते, 1 जनवरी, 1601 ई (सीई) समन्वित सार्वभौमिक समय का प्रतिनिधित्व करता है (यूटीसी)। जब कोई फ़ाइल किसी फ़ाइल को बनाता है, एक्सेस करता है या लिखता है तो Windows रिकॉर्ड करने के लिए फ़ाइल का उपयोग करता है।

स्रोत: MSDN documentation - DateTime.ToFileTime Method

2

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

Stopwatch.GetTimestamp(); 
+0

यह उत्तर आपको जिस तरह से टाइमस्टैम्प मिलता है! इसे पथ वर्ग का उपयोग करके फ़ाइल में संलग्न करें और स्ट्रिंग मैनिपुलेशन बिल्कुल कोई समस्या नहीं है। यह डेटटाइम के लिए केवल एक विकल्प है। टॉस्ट्रिंग विधि (स्ट्रिंग) या स्ट्रिंग। फोर्मेट ("{0: yyyy-MM-dd_hh-mm-ss-tt}", डेटटाइम.अब); – Joseph

1

आप नीचे दिए गए बजाय का उपयोग कर सकते हैं:

DateTime.Now.Ticks 
संबंधित मुद्दे