나는 동일한 디렉토리에 동일한 파일의 여러 버전을 갖고 싶어하는이 문제를 여러 번 발견했습니다. 내가 C #을 사용하여 해왔 던 방식은 다음과 같이 파일 이름에 타임 스탬프를 추가하는 것 DateTime.Now.ToString().Replace('/', '-').Replace(':', '.')
입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
답변
DateTime.ToString 메서드 (String)를 사용할 수 있습니다.
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가 있습니다. (두 번째 분수, 후행 0이 잘림), 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)
);
}
}
답변
다음을 선호합니다.
string result = "myFile_" + DateTime.Now.ToFileTime() + ".txt";
ToFileTime ()은 무엇을합니까?
현재 DateTime 개체의 값을 Windows 파일 시간으로 변환합니다.
public long ToFileTime()
Windows 파일 시간은 1601 AD (CE) 협정 세계시 (UTC) 1 월 1 일 자정 12시 이후 경과 한 100 나노초 간격의 수를 나타내는 64 비트 값입니다. Windows는 파일 시간을 사용하여 응용 프로그램이 파일을 생성, 액세스 또는 쓸 때 기록합니다.
출처 : MSDN 문서-DateTime.ToFileTime 메서드
답변
DateTime.Now.Ticks
대신 추가 하는 것이 3 개의 문자열을 생성하지 않고 틱 값도 항상 고유하므로 조금 더 빠릅니다.
답변
당신이 사용할 수있는:
Stopwatch.GetTimestamp();
답변
대신 아래를 사용할 수 있습니다.
DateTime.Now.Ticks
답변
현재 날짜 및 시간의 경우 파일 시스템에있는 파일의 이름입니다. 이제 string.Format 메서드를 호출하고 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"
text- 필요한 출력 파일의 첫 부분은 모두 텍스트로 시작합니다.
{0 : 문자열 자리 표시 자임을 나타냅니다. 0은 여기에 삽입 된 매개 변수의 색인을 나타냅니다.
yyyy- 연도를 4 자리 숫자와 대시로 인쇄합니다. “year 10000″문제가 있습니다.
MM- 월을 두 자리로 인쇄합니다.
dd_ 밑줄이 뒤에 오는 두 자리 숫자로 날짜를 인쇄합니다.
hh- 시간을 두 자리로 인쇄합니다.
mm- 분도 두 자리로 인쇄합니다.
ss- 예상대로 초를 인쇄합니다.
tt 시간에 따라 AM 또는 PM을 인쇄합니다.