Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
ai.fluctio.fluctio-sim / Utils / SerializableClasses / SerializableDateTime.cs
Size: Mime:
using System;
using UnityEngine;

namespace Fluctio.FluctioSim.Utils.SerializableClasses
{
	[Serializable]
	public class SerializableDateTime : ISerializationCallbackReceiver, IFormattable
	{

		#region Info and constructor

		[SerializeField] private long binary;
		public DateTime DateTime { get; private set; }

		public SerializableDateTime(DateTime dateTime)
		{
			DateTime = dateTime;
			binary = DateTime.ToBinary();
		}
		
		#endregion

		#region Cast operators
		
		public static implicit operator DateTime(SerializableDateTime serializableDateTime)
		{
			return serializableDateTime.DateTime;
		}

		public static implicit operator SerializableDateTime(DateTime dateTime)
		{
			return new SerializableDateTime(dateTime);
		}
		
		#endregion

		#region Serialization
		
		public void OnBeforeSerialize()
		{
			binary = DateTime.ToBinary();
		}

		public void OnAfterDeserialize()
		{
			DateTime = DateTime.FromBinary(binary);
		}
		
		#endregion

		#region ToString

		// ReSharper disable once SpecifyACultureInStringConversionExplicitly
		public override string ToString() => DateTime.ToString();
		
		public string ToString(string format, IFormatProvider formatProvider)
		{
			return DateTime.ToString(format, formatProvider);
		}		

		#endregion

	}
}