.NET Fiddle

CSharp · Console

/Program.cs

using System;
					
public class Program
{
	public static void Main()
	{
		var someTestFileNames = new []{
			"myFile.txt","myTarGz.tar.gz"
		};
		foreach( var tester in someTestFileNames)
			Console.WriteLine(DatifyFileName(tester));
	}
	
	/*
	public static string DatifyFileName(string fileName)
	{
		var nameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName);
		var extension = System.IO.Path.GetExtension(fileName);
		return $"{nameWithoutExtension}_{DateTime.Now.ToUniversalTime().ToString("THHmmssfff")}{extension}";
	}
	*/
	
	public static string DatifyFileName(ReadOnlySpan<char> fileName)
	{
		var lastDotIndex = fileName.LastIndexOf('.');
		//Maybe : if( lastDotIndex < 0 ) throw ArgumentException("no extension found");
		var nameWithoutExtension = fileName[..lastDotIndex];
		var extension = fileName[lastDotIndex..];
		return $"{nameWithoutExtension}_{DateTime.Now.ToUniversalTime().ToString("THHmmssfff")}{extension}";
	}
}
;