Showing results 1 to 10 of 14

Thread: C#: String mit Datum (dd.MM.yyyy) in DateTime oder Unix Timestamp umwandeln

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    27.08.2011
    Posts
    88

    Default C#: String mit Datum (dd.MM.yyyy) in DateTime oder Unix Timestamp umwandeln

    Hallo,

    versuche verzweifelt über VSTA (C#) eine Stringvariable von Zenon, die ein Datum im Format dd.MM.yyyy enthält ins DateTime oder Unix timestamp umzuwandeln um diesen als "SelDay" in folgendem Codeteil zu verwenden:

    public void Macro_SelectedDay()
            {
                try
                {
                    obTr1_Var.Item("Trend1_Parameter.Starttime").set_Value(0, (Convert.ToUInt32(SelDay.Date.Subtract(new DateTime(1970, 1, 1)).TotalSeconds)) - 3600);
                    obTr1_Var.Item("Trend1_Parameter.Endtime").set_Value(0, Convert.ToUInt32(obTr1_Var.Item("Trend1_Parameter.Starttime").get_Value(0)) + 86400);
                    Macro_Trend_Zellen();
                }
    
                catch (Exception ex)
                { 
                    MessageBox.Show("ERROR ThisProject_Startup : " + ex.Message + " " + ex.Source);
                    return;
                }
            }

    Jemand eine Idee??

    Danke für eure Hilfe

    Johannes

  2. #2
    Join Date
    13.08.2013
    Posts
    57

    Default Re: C#: String mit Datum (dd.MM.yyyy) in DateTime oder Unix Timestamp umwandeln

    Ich weiß nicht ob ich da Frage richtige verstanden habe, aber versuchs mal hiermit, liest den String einer zenon Variable und wandelt in ein DateTime Objekt

     public DateTime StringTODateTime()
            {
                string MyDateAsString = this.Variables().Item("MyDateTimeString").get_Value(0).ToString();
                string[] split = MyDateAsString.Split('.');  //z.B. 1.12.1999  tag= split[0]=1, Monat= split[1]=12 Jahr=split[2]=1999
                //Für den Konstuktur von DateTime müssen die Argumente umgedreht werden public DateTime(int year, int month, int day);
                DateTime datetime = new DateTime(int.Parse(split[2]), int.Parse(split[1]), int.Parse(split[0]));  //Achtung hier können Exceptions auftreten wenn der String nicht im Format dd.mm.yyyy war....
                return datetime;
    
            }


    Sigi

  3. #3
    Join Date
    27.08.2011
    Posts
    88

    Daumen hoch Re: C#: String mit Datum (dd.MM.yyyy) in DateTime oder Unix Timestamp umwandeln

    Super, danke für die Hilfe!

  4. #4
    Join Date
    27.08.2011
    Posts
    88

    Default Re: C#: String mit Datum (dd.MM.yyyy) in DateTime oder Unix Timestamp umwandeln

    Hallo,

    hatte mein Problem folgendermaßen gelöst (siehe Code) und das hat auch soweit funktioniert....bis zur Zeitumstellung am Samstag


    public void Macro_Tr1_ActualDay()
            {
                DateTime ActDay = DateTime.Now;
                obTr1_Var.Item("Tr1_Parameter.Starttime").set_Value(0, (Convert.ToUInt32(ActDay.Date.Subtract(new DateTime(1970, 1, 1)).TotalSeconds)) - 3600);
                obTr1_Var.Item("Tr1_Parameter.Endtime").set_Value(0, Convert.ToUInt32(obTr1_Var.Item("Tr1_Parameter.Starttime").get_Value(0)) + 86400);
                obTr1_Var.Item("Tr1_Parameter.Startdate").set_Value(0, (ActDay.ToString("dd.MM.yyyy")));
                Macro_Trend_1();
            }
    
            public void Macro_Tr1_SelectedDay()
            {
                try
                {
                    DateTime SelDay = Convert.ToDateTime(obTr1_Var.Item("Tr1_Parameter.Startdate").get_Value(0).ToString());
                    obTr1_Var.Item("Tr1_Parameter.Starttime").set_Value(0, (Convert.ToUInt32(SelDay.Date.Subtract(new DateTime(1970, 1, 1)).TotalSeconds)) - 3600);
                    obTr1_Var.Item("Tr1_Parameter.Endtime").set_Value(0, Convert.ToUInt32(obTr1_Var.Item("Tr1_Parameter.Starttime").get_Value(0)) + 86400);
                    Macro_Trend_1();
                }
    
                catch (Exception ex)
                {
                    MessageBox.Show("ERROR Tr1_SelectedDay: " + ex.Message + " " + ex.Source);
                    return;
                }
            }

    Mir ist auch klar warum das Problem auftritt, da Zenon ja die Archivwerte im UTC Format speichert...Dementsprechend müsste ich für ein Datum, das in die Sommerzeit fällt 7200 Sekunden abziehen statt 3600.

    Wie kann ich das Problem lösen?

    Danke für die Hilfe

    Johannes

  5. #5
    Join Date
    27.08.2011
    Posts
    88

    Default Re: C#: String mit Datum (dd.MM.yyyy) in DateTime oder Unix Timestamp umwandeln

    Im Prinzip bräuchte ich eine Funktion, die das Datum (local Time) in den epoch timestamp umwandelt!

  6. #6
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: C#: String mit Datum (dd.MM.yyyy) in DateTime oder Unix Timestamp umwandeln

    http://www.epochconverter.com/
    ...
    C#

    var epoch = (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;


Similar Threads

  1. Alarm Timestamp
    By kavya in forum zenon Supervisor
    Replies: 6
    Last Post: 15th October 2013, 12:06
  2. String length field for STRING variables.
    By stolyarov_as in forum zenon Supervisor
    Replies: 3
    Last Post: 11th January 2013, 07:49
  3. Replies: 1
    Last Post: 17th September 2012, 15:07
  4. UTC datetime from IPA
    By fabios in forum VBA
    Replies: 2
    Last Post: 12th May 2011, 19:12
  5. Rezepte mit String-Variablen
    By sam9188 in forum zenon Supervisor
    Replies: 1
    Last Post: 9th January 2011, 23:04

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •