Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UNE STRUCTURE QUI GÈRE LE UNIX TIMESTAMP


Information sur la source

Catégorie :Date / Heure Source .NET ( DotNet ) Classé sous : timestamp, unix Niveau : Initié Date de création : 20/09/2004 Date de mise à jour : 20/09/2004 13:27:20 Vu : 10 877

Note :
5 / 10 - par 2 personnes
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

J'ai précisément choisi le type valeur (structure) pour donner la possibilité de faire des calcul dessus. Les surcharges logiques ont été ajoutée tel que le +, -.

Merci de me faire part de vos suggestions pour améliorer le codage.
 

Source

  • /// <summary>
  • /// <author>Simon Kari (Bismark Prods)</author>
  • /// <date>17/09/2004</date>
  • /// Structure de gestion du timestamp unix
  • /// </summary>
  • [Serializable()]
  • public struct UnixTimestamp
  • {
  • private double _value;
  • private double Value
  • {
  • get
  • {
  • return this._value;
  • }
  • }
  • public UnixTimestamp(double initialValue)
  • {
  • if(initialValue < 0)throw new ArgumentException("Negative number not allowed","initialValue");
  • this._value = initialValue;
  • }
  • public UnixTimestamp(DateTime initialValue)
  • {
  • if(initialValue.Year < 1970)throw new ArgumentException("Dates under 1970 not allowed","initialValue");
  • DateTime start = new DateTime(1970,1,1);
  • TimeSpan unix = initialValue.Subtract(start);
  • this._value = Math.Ceiling(unix.TotalSeconds);
  • }
  • public static UnixTimestamp operator+(UnixTimestamp lhs, UnixTimestamp rhs)
  • {
  • return new UnixTimestamp(lhs + rhs);
  • }
  • public static UnixTimestamp operator-(UnixTimestamp lhs, UnixTimestamp rhs)
  • {
  • return new UnixTimestamp(lhs - rhs);
  • }
  • public static implicit operator UnixTimestamp(double Value)
  • {
  • return new UnixTimestamp(Value);
  • }
  • public static implicit operator UnixTimestamp(DateTime Value)
  • {
  • return new UnixTimestamp(Value);
  • }
  • public static implicit operator double (UnixTimestamp from)
  • {
  • return from.Value;
  • }
  • public static implicit operator int(UnixTimestamp from)
  • {
  • return System.Convert.ToInt32(from.Value);
  • }
  • public static implicit operator long(UnixTimestamp from)
  • {
  • return System.Convert.ToInt64(from.Value);
  • }
  • public override string ToString()
  • {
  • return this._value.ToString();
  • }
  • public DateTime ToDateTime()
  • {
  • DateTime dt = new DateTime(1970,1,1);
  • dt.AddSeconds(this._value);
  • return dt;
  • }
  • public static DateTime ToDateTime(double utimestamp)
  • {
  • DateTime dt = new DateTime(1970,1,1);
  • dt.AddSeconds(utimestamp);
  • return dt;
  • }
  • public static DateTime ToDateTime(UnixTimestamp ut)
  • {
  • return ToDateTime(ut);
  • }
  • }
	/// <summary>
	/// <author>Simon Kari (Bismark Prods)</author>
	/// <date>17/09/2004</date>
	/// Structure de gestion du timestamp unix
	/// </summary>
	[Serializable()]
    public struct UnixTimestamp
	{
		private double _value;
		private double Value
		{
			get
			{
				return this._value;
			}
		}

		public UnixTimestamp(double initialValue)
		{
			if(initialValue < 0)throw new ArgumentException("Negative number not allowed","initialValue");
			this._value = initialValue;
		}

		public UnixTimestamp(DateTime initialValue)
		{
			if(initialValue.Year < 1970)throw new ArgumentException("Dates under 1970 not allowed","initialValue");
			DateTime start = new DateTime(1970,1,1);
			TimeSpan unix = initialValue.Subtract(start);
			this._value = Math.Ceiling(unix.TotalSeconds);
		}
		public static UnixTimestamp operator+(UnixTimestamp lhs, UnixTimestamp rhs)
		{
			return new UnixTimestamp(lhs + rhs);
		}
		public static UnixTimestamp operator-(UnixTimestamp lhs, UnixTimestamp rhs)
		{
			return new UnixTimestamp(lhs - rhs);
		}
		public static implicit operator UnixTimestamp(double Value)
		{
			return new UnixTimestamp(Value);
		}
		public static implicit operator UnixTimestamp(DateTime Value)
		{
			return new UnixTimestamp(Value);
		}
		public static implicit operator double (UnixTimestamp from)
		{
			return from.Value;
		}
		public static implicit operator int(UnixTimestamp from)
		{
			return System.Convert.ToInt32(from.Value);
		}
		public static implicit operator long(UnixTimestamp from)
		{
			return System.Convert.ToInt64(from.Value);
		}
			
		public override string ToString()
		{
			return this._value.ToString();
		}

		public DateTime ToDateTime()
		{
			DateTime dt = new DateTime(1970,1,1);
			dt.AddSeconds(this._value);
			return dt;
		}

		public static DateTime ToDateTime(double utimestamp)
		{
			DateTime dt = new DateTime(1970,1,1);
			dt.AddSeconds(utimestamp);
			return dt;
		}
		public static DateTime ToDateTime(UnixTimestamp ut)
		{
			return ToDateTime(ut);
		}
	}

Historique

20 septembre 2004 13:27:21 :
ajout d'un semblant de gestion d'erreur

Commentaires et avis

signaler à un administrateur
Commentaire de suchnight le 20/04/2005 23:07:46

I can't speach French sorry!!
Maybe :
        public DateTime ToDateTime()
        {
            DateTime dt = new DateTime(1970,1,1);
            DateTime dt2 = dt.AddSeconds(this._value);
            return dt2;
        }

        public static DateTime ToDateTime(double utimestamp)
        {
            DateTime dt = new DateTime(1970,1,1);
            DateTime dt2 = dt.AddSeconds(utimestamp);
            return dt2;
        }

signaler à un administrateur
Commentaire de suchnight le 20/04/2005 23:09:11

Thank you for this code,
Really Help !!

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Connexion à un serveur UNIX... [ par shervy ] Bonjour,Je n'arrive pas à me connecter à un serveur UNIX.Voilà ce que j'utilise :IPAddress myIP = IPAddress.Parse("127.12.4.9");TcpClient tcpClient = programmation C sous unix [ par griffon2_6 ] Je suis novice, dans le cadre de mes &#233;tudes on nous a propos&#233; de r&#233;alis&#233; un syst&#232;me &#233;quivalent &#224; linux (&#233;mulat Mysql + Problème...................................... [ par emmanuel9 ] Bonjour &#224; tous, J'ai une application .net qui doit communiquer avec mysql et qui sera destin&#233; &#224; &#234;tre commercialis&#233;. Questio exécuter des commandes unix via une application c# [ par kokoMelle ] bonjour, au fait je vais programmer avec c#.net sous windows et j'ai besoin à partir du programme c# exécuter des rpm sous fedora (une autre machine faire du ftp [ par beny100 ] bonjour,j'ai ecris mon programme en csharp et les fichiers que traite mon programme sont stockes sur un serveur unix.mon problème est que je sais pas thread en execution parallele (genre démon unix) à une interface de formulaires [ par Capitaine Iron ] salut les loulou, je viens requerir votre aide parceque je pinaille un peut avec c#....voila ce que je veux fairemon projet consiste a faire un logici exécuter des commandes Unix via C# [ par katwes ] Bonjour,Je souhaite me connecter à un serveur unix et exécuter des commandes pour modifier les droits sur des répertoires et des fichiers.Comment-puis Usage d'un timestamp ? [ par olibara ] Bonjour J'avais pensé naivement que le fait de declarer un timestamp dans une table faisait que le DBE automatiquement modifiait cette date a chaque Insérer CURRENT_TIMESTAMP avec SQL Sever 2005 [ par mloanthony ] &gt;Bonjour, &gt; &gt;Habitué à DB2, j'ignore comment 'insert' les millisecondes avec SQL Server 2005 dans une colonne de type datetime. &gt; &gt;Voic


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,484 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.