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
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)
);
}
}
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.
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.
bạn có thể sử dụng:
Stopwatch.GetTimestamp();
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
Bạn có thể sử dụng dưới đây thay vì:
DateTime.Now.Ticks
- 1. Cách thêm dấu thời gian vào TFSBuild.proj?
- 2. Thêm ngày vào dấu thời gian
- 3. Thêm dấu thời gian vào tên tệp bằng mv trong BASH
- 4. Java: Cách thêm giây vào Dấu thời gian?
- 5. Đường ray - cách thêm dấu thời gian vào mô hình?
- 6. Cách tự động thêm khoảng thời gian vào dấu thời gian?
- 7. PostgreSQL: Thêm Khoảng thời gian vào Dấu thời gian từ giá trị cột
- 8. Ký tên với dấu thời gian và xác thực tại máy chủ dấu thời gian
- 9. tệp grep dựa trên dấu thời gian
- 10. sqlSave: Ánh xạ dấu thời gian biểu dữ liệu vào dấu thời gian SQL Server
- 11. Làm cách nào để thêm thông tin đóng dấu thời gian vào các tạo tác Maven?
- 12. Thêm Thời gian Joda
- 13. Thêm phút vào thời gian trong PHP
- 14. Thêm phút vào đối tượng Thời gian
- 15. Cách thêm UIButton vào thời gian chạy
- 16. Lấy tệp mới nhất dựa trên dấu thời gian
- 17. Thêm loại vào không gian tên std
- 18. Thêm giờ để đóng dấu thời gian trong python
- 19. Thêm một tháng vào dấu thời gian trong mỗi lần lặp
- 20. Làm cách nào để tránh thêm các trường dấu thời gian vào các bảng của bạn?
- 21. Cách thêm 4 giờ vào thời gian trong PHP/MySQL
- 22. Thêm 13 giờ để một dấu thời gian
- 23. sạch NSLog - Không dấu thời gian và chương trình tên
- 24. dấu thời gian trên tên file sử dụng PowerShell
- 25. Thêm tên và không gian tên vào DataContract làm gì?
- 26. trừ dấu thời gian
- 27. Dấu thời gian SSIS
- 28. MongoDb dấu thời gian
- 29. Thêm các lớp thực thể động vào thời gian chạy
- 30. Làm cách nào để thêm 24 giờ vào dấu thời gian unix trong php?
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