2011-10-26 46 views
91

Tôi đã gặp vấn đề này nhiều lần trong đó tôi muốn có nhiều phiên bản của cùng một tệp trong cùng một thư mục. Cách tôi đã làm nó bằng cách sử dụng C# là bằng cách thêm một dấu thời gian vào tên tập tin với một cái gì đó như thế này DateTime.Now.ToString().Replace('/', '-').Replace(':', '.'). Có cách nào tốt hơn để thực hiện việc này không?Thêm Dấu thời gian vào tên tệp

Trả lời

208

Bạn có thể sử dụng DateTime.ToString Method (String)

DateTime.Now.ToString("yyyyMMddHHmmssfff")

hoặc string.Format

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

hoặc Interpolated Strings

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

Có sau specifiers định dạng tùy chỉnh y (năm), M (tháng), d (ngày), h (giờ 12), H (giờ 24) , m (phút), s (giây), f (phần thứ hai là ), F (phần thứ hai, số 0 được cắt), t (PM hoặc AM) và z (múi giờ).

Với Phương pháp mở rộng

Cách sử dụng:

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

phương pháp mở rộng

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

Tôi đã thêm 'Path.GetDirectoryName (fileName) 'để có được đường dẫn đầy đủ đến tệp. Sau đó thay thế 'string.Concat()' bằng 'Path.Kết hợp() 'lấy tên đầy đủ. – gilu

8

Có lẽ phụ thêm DateTime.Now.Ticks thay vào đó, nhanh hơn một chút vì bạn sẽ không tạo 3 chuỗi và giá trị tick sẽ luôn là duy nhất.

11

Tôi thích sử dụng:

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

ToFileTime() làm gì?

Chuyển đổi giá trị của đối tượng DateTime hiện tại thành thời gian tệp Windows.

public long ToFileTime()

Một Windows thời gian tập tin là một giá trị 64-bit đại diện cho số của khoảng 100 nano giây đã trôi qua kể từ 12:00 nửa đêm, 1 tháng 1 năm 1601 AD (CE) Coordinated Universal Time (UTC). Windows sử dụng thời gian tệp để ghi lại khi một ứng dụng tạo, truy cập hoặc ghi vào một tệp.

Nguồn: MSDN documentation - DateTime.ToFileTime Method

2

bạn có thể sử dụng:

Stopwatch.GetTimestamp(); 
+0

câu trả lời này theo cách bạn nhận được dấu thời gian !. gắn thêm nó vào một tệp bằng cách sử dụng lớp Path và thao tác chuỗi không phải là vấn đề gì cả. điều này chỉ thay thế cho phương thức DateTime.ToString (String) hoặc string.Format ("{0: yyyy-MM-dd_hh-mm-ss-tt}", DateTime.Now); – Joseph

1

Bạn có thể sử dụng dưới đây thay vì:

DateTime.Now.Ticks 
Các vấn đề liên quan