Leading zeros

  • This topic has 14 replies, 4 voices, and was last updated 4 months ago by SGG.
Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #1732
    Rob
    Participant

    How can I display a leading zero on a number?

    Using the time example, I use a separate dynamic text element for the hours and minutes, but for less than 10 minutes the display looks like:

    12: 1

    and should look like:

    12:01

    I have tried adding a new Number format to the table of “DD” with zero decimal digits, but this didn’t work.

    #1733
    Mikhail
    Moderator

    I see…
    I can suggest a hack: put a static text with 0 below the dynamic text. You should use a font with the same width of symbols, auto size and right align for dynamic text.
    Most likely, the formatting will be implemented in the next major update.

    #9974
    SGG
    Participant

    Hello Mikhail,
    concerning the above statement by Rob “Using the time example, I use a separate dynamic text element for the hours and minutes…”

    is there a better way to combine hours and minutes, and have this displayed as a single entity in table view?

    #9976
    manjey73
    Participant

    They can be displayed as ASCII text by applying time formatting. It seems that there are corresponding formulas in C#.

    Show your example how you display time on a mnemonic circuit

    • This reply was modified 4 months ago by manjey73.
    #9978
    SGG
    Participant

    The link below is a picture showing how the hours and minutes occupy two rows instead of one.

    https://drive.google.com/file/d/1lmG6N2BrYfohXd6pM-cuSkLfmNBUVOzX/view?usp=sharing

    Under T4 Availability,
    the next row = 0 hours
    the next row = 1 minutes

    can I have it as 0:1 on a single row in table view?

    #9979
    manjey73
    Participant

    I think you can, you need another calculated channel and use the formula to put it in time. If you are satisfied that it will show the time, but here you need to try with formulas depending on how you want to see the view. The simplest thing is to enter the data in DateTime and tell the channel to display only the time

    #9980
    manjey73
    Participant

    double dt = new DateTime(Year, Month, Day, Hours, Minute, Seconds).ToOADate()

    You need something like this, not sure if the formula is correct, not tested. Where, instead of hours and minutes, you should put your data, as far as I remember, by converting it to int

    Year, day, etc. can be specified 0

    • This reply was modified 4 months ago by manjey73.
    #9984
    SGG
    Participant

    Hello Manjey,
    I’ve tried it, not working. I’m not so good with formulas but this is what i did based on your earlier post.

    I INPUTED THIS IN FORMULA TABLE:
    double Dt(Year, Month, Day, Hours, Minute, Seconds)
    { return DateTime().ToOADate();
    }

    AND I INPUTED THIS IN CHANNEL FORMULA;
    Dt(0,0,0,Val(6311), Val(6312), 0)

    Please guide me further.

    #9985
    manjey73
    Participant

    double Dt(double hours, doble minute)
    {
    return new DateTime(0, 0, 0, Convert.ToInt32(hours), Convert.ToInt32(minute), 0).ToOADate();
    }

    In channel formula Dt(Val(6311), Val(6312))

    Format channel – Time

    If you transmit only hours and minutes, then in theory this is how it should be

    #9986
    manjey73
    Participant

    It is impossible to make a year, month, day with zeros in this version, I just made a formula in the channel

    new DateTime(2022, 1, 1, 2, 3, 0).ToOADate()

    Where 2 and 3 are your channels of hours and minutes. Right in the channel they can be written like this

    new DateTime(2022, 1, 1, Convert.ToInt32(Val(6311)), Convert.ToInt32(Val(6312)), 0).ToOADate()

    #9987
    manjey73
    Participant

    double myDT(double hours, doble minute)
    {
    DateTime ddt = DateTime.Now;
    return new DateTime(ddt.Year, ddt.Month, ddt.Day, Convert.ToInt32(hours), Convert.ToInt32(minute), 0).ToOADate();
    }

    in channel

    myDT(Val(6311), Val(6312))

    format channel – Time

    But it will show seconds, If you want without seconds, then it will be a text field converted from time, with an indication of the display format and subsequent translation from ASCII to an array of bytes, and the format of the ASCII Text cell

    • This reply was modified 4 months ago by manjey73.
    #9989
    SGG
    Participant

    Hello Manjey,
    It worked perfectly…Thanks a lot, you just made my day.

    #9990
    manjey73
    Participant

    You can make a general formula, for example, for applying a record in the maintenance time channel.

    double myDT(double year, double month, double day, double hours, doble minute) // Without seconds
    {
    int y = Convert.ToInt32(year);
    int mh = Convert.ToInt32(month);
    int d = Convert.ToInt32(day);
    int h = Convert.ToInt32(hours);
    int m = Convert.ToInt32(minute);
    return new DateTime(y, mh, d, h, m, 0).ToOADate();
    }

    Then it can be used for different purposes. But you will have to specify the year, month and day every time. For your case, it is simple to specify and set the Time channel format

    myDT(2022, 1, 1, Val(6311), Val(6312))

    #9991
    manjey73
    Participant

    For example, you can record the maintenance time of some equipment in the calculation channel and then compare it with the current one somewhere and create messages.

    myDT(2023, 5, 15, 10, 0)

    Year 2023, month 5, 15th, 10 am

    #9993
    SGG
    Participant

    I tried this, it works however the second is still showing. Thanks for your urgent response.

Viewing 15 posts - 1 through 15 (of 15 total)
  • You must be logged in to reply to this topic.