Kilkakrotnie spotkałem się z tym problemem, w którym chciałbym mieć wiele wersji tego samego pliku w tym samym katalogu. Sposób, w jaki robiłem to za pomocą C #, polega na dodaniu znacznika czasu do nazwy pliku za pomocą czegoś takiego DateTime.Now.ToString().Replace('/', '-').Replace(':', '.'). Czy jest lepszy sposób, aby to zrobić?
Istnieją następujące specyfikatory formatu niestandardowego y (rok), M (miesiąc), d (dzień), h (godzina 12), H (godzina 24), m (minuta), s (sekunda), f (drugi ułamek), F (drugi ułamek, końcowe zera są obcinane), t (PM lub AM) i z (strefa czasowa).
Z metodą rozszerzenia
Stosowanie:
string result ="myfile.txt".AppendTimeStamp();//myfile20130604234625642.txt
Dodałem, Path.GetDirectoryName(fileName)aby uzyskać pełną ścieżkę do pliku. Wtedy otrzymuje string.Concat()z Path.Combine()tym uzyskać pełny nazw.
gilu
17
Wolę używać:
string result ="myFile_"+DateTime.Now.ToFileTime()+".txt";
Co robi ToFileTime ()?
Konwertuje wartość bieżącego obiektu DateTime na czas pliku systemu Windows.
public long ToFileTime()
Czas pliku systemu Windows to 64-bitowa wartość, która reprezentuje liczbę 100-nanosekundowych interwałów, które upłynęły od północy 1 stycznia 1601 AD (CE) Coordinated Universal Time (UTC). System Windows wykorzystuje czas pliku do rejestrowania, kiedy aplikacja tworzy, uzyskuje dostęp lub zapisuje do pliku.
Być może DateTime.Now.Tickszamiast tego dołączanie jest trochę szybsze, ponieważ nie będziesz tworzyć 3 ciągów, a wartość ticków również zawsze będzie unikalna.
ta odpowiedź w sposób, w jaki otrzymujesz znacznik czasu !. dołącz go do pliku za pomocą klasy Path, a operowanie na ciągach znaków nie stanowi żadnego problemu. to tylko alternatywa dla metody DateTime.ToString (String) lub string.Format ("{0: rrrr-MM-dd_hh-mm-ss-tt}", DateTime.Now);
Dla Bieżąca data i godzina jako nazwa pliku w systemie plików. Teraz wywołaj metodę string.Format i połącz ją z DateTime.Now, aby uzyskać metodę, która generuje poprawny ciąg na podstawie daty i godziny.
using System;
using System.IO;classProgram{staticvoidMain(){//// 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");}}
Path.GetDirectoryName(fileName)
aby uzyskać pełną ścieżkę do pliku. Wtedy otrzymujestring.Concat()
zPath.Combine()
tym uzyskać pełny nazw.Wolę używać:
Co robi ToFileTime ()?
Źródło: dokumentacja MSDN - metoda DateTime.ToFileTime
źródło
Być może
DateTime.Now.Ticks
zamiast tego dołączanie jest trochę szybsze, ponieważ nie będziesz tworzyć 3 ciągów, a wartość ticków również zawsze będzie unikalna.źródło
możesz użyć:
źródło
Zamiast tego możesz użyć poniżej:
źródło
Dla Bieżąca data i godzina jako nazwa pliku w systemie plików. Teraz wywołaj metodę string.Format i połącz ją z DateTime.Now, aby uzyskać metodę, która generuje poprawny ciąg na podstawie daty i godziny.
Wynik :
źródło