Если вы хотите что-то простое, которое можно конвертировать туда и обратно независимо от того, на какой машине вы находитесь.Затем вы можете преобразовать дату в байтовый массив и использовать ее для создания Guid
.Это нестандартно, но будет генерировать одинаковые значения Guid
для каждого DateTime
.
var today = new DateTime(2018, 9, 18, 10, 59, 00);
var bytes = BitConverter.GetBytes(today.Ticks);
Array.Resize(ref bytes, 16);
var guid = new Guid(bytes);
Console.WriteLine(guid); //bd02b200-1d55-08d6-0000-000000000000
И вернуться к дате.
var dateBytes = guid.ToByteArray();
Array.Resize(ref dateBytes, 8);
var date = new DateTime(BitConverter.ToInt64(dateBytes));
Console.WriteLine(date); //9/18/2018 10:59:00
Если вы хотите использовать расширениятогда.
class Program
{
static void Main(string[] args)
{
var date = new DateTime(2018, 09, 18, 12, 00, 00);
var guid = date.ToGuid();
Console.WriteLine(guid); // 428a6000-1d5e-08d6-0000-000000000000
var back2date = guid.ToDateTime();
Console.WriteLine(back2date); // 9/18/2018 12:00:00
}
}
public static class DateTimeExtensions
{
public static Guid ToGuid(this DateTime dt)
{
var bytes = BitConverter.GetBytes(dt.Ticks);
Array.Resize(ref bytes, 16);
return new Guid(bytes);
}
}
public static class GuidExtensions
{
public static DateTime ToDateTime(this Guid guid)
{
var bytes = guid.ToByteArray();
Array.Resize(ref bytes, 8);
return new DateTime(BitConverter.ToInt64(bytes));
}
}