TimeStamp को एक फ़ाइल नाम में जोड़ें


118

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

जवाबों:


260

आप DateTime.ToString विधि (स्ट्रिंग) का उपयोग कर सकते हैं

DateTime.Now.ToString("yyyyMMddHHmmssfff")

या स्ट्रिंग

string.Format("{0:yyyy-MM-dd_HH-mm-ss-fff}", DateTime.Now);

या प्रक्षेपित स्ट्रिंग्स

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

निम्नलिखित कस्टम प्रारूप विनिर्देशक y (वर्ष), M (महीना), d (दिन), h (घंटा 12), H (घंटा 24), m (मिनट), s (दूसरा), f (दूसरा अंश), F हैं (दूसरा अंश, अनुगामी शून्य को छाँटा जाता है), t (PM या AM) और z (समय क्षेत्र)।

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

उपयोग:

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(fileName)फ़ाइल में पूर्ण पथ प्राप्त करने के लिए जोड़ा है। फिर पूर्ण फ़ाइल नाम प्राप्त करने के string.Concat()साथ प्रतिस्थापित किया Path.Combine()गया।
गिलू

17

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

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

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

एक Windows फ़ाइल समय के लिए वर्तमान DateTime ऑब्जेक्ट का मान परिवर्तित करता है।

public long ToFileTime()

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

स्रोत: MSDN प्रलेखन - DateTime.ToFileTime विधि


10

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


2

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

Stopwatch.GetTimestamp();

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


1

फ़ाइल सिस्टम पर फ़ाइल के नाम के रूप में वर्तमान दिनांक और समय के लिए। अब string को कॉल करें ।ormat मेथड, और DateTime.Now के साथ संयोजित करें, ऐसी विधि के लिए जो डेट और टाइम के आधार पर सही स्ट्रिंग को आउटपुट करती है।

using System;
using System.IO;

class Program
{
    static void Main()
    {
        //
        // Write file containing the date with BIN extension
        //
        string n = string.Format("text-{0:yyyy-MM-dd_hh-mm-ss-tt}.bin",
            DateTime.Now);
        File.WriteAllText(n, "abc");
    }
}

आउटपुट:

C:\Users\Fez\Documents\text-2020-01-08_05-23-13-PM.bin

"text-{0:yyyy-MM-dd_hh-mm-ss-tt}.bin"

पाठ- आउटपुट आवश्यक फ़ाइलों का पहला भाग सभी पाठ के साथ शुरू होगा-

{0: इंगित करता है कि यह एक स्ट्रिंग प्लेसहोल्डर है। शून्य यहां डाले गए मापदंडों के सूचकांक को इंगित करता है

yyyy- वर्ष को चार अंकों में प्रिंट करता है और इसके बाद "वर्ष 10000" की समस्या होती है

MM- महीने को दो अंकों में प्रिंट करता है

dd_ दिन को दो अंकों में प्रिंट करता है और उसके बाद एक अंडरस्कोर होता है

hh- घंटे को दो अंकों में प्रिंट करता है

मिमी- मिनट को प्रिंट करता है, वह भी दो अंकों में

ss- उम्मीद के मुताबिक, यह सेकंड प्रिंट करता है

tt प्रिंट्स AM या PM दिन के समय के आधार पर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.