Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Lex Godthelp 15 posts 99 karma points
    Feb 06, 2017 @ 16:25
    Lex Godthelp
    0

    Razor - Adding a comma after 2 characters of a string

    Hi guys,

    Quick question. I'd like to add a

    :

    In between a string i have. Now i have a string that goes like this:

    @((item.GetValue("starttijdwebinar")-100))
    

    This outputs into:

    e.g. 2100
    

    Now i'd like to make it so this will output with a ; after the first 2 characters like this:

    e.g. 21:00
    

    Do you guys have any quick suggestions?

  • Kevin Jump 2348 posts 14896 karma points MVP 8x c-trib
    Feb 06, 2017 @ 16:37
    Kevin Jump
    0

    hi.

    string.Format("{0:00':'00}", value);
    

    will output in the correct format.

    but if you are manipulating date functions, you are probably better putting everything into a DateTime value - and using the time manipulation functions (e.g date.AddHours(-1) ) as that will copy with all the strange things (like taking an hour from 24 mins past midnight on the first of a month.).

  • Lex Godthelp 15 posts 99 karma points
    Feb 06, 2017 @ 16:46
    Lex Godthelp
    0

    Hi Kevin,

    Thank you for your response. Might be a stupid question but how do i work this into my code?

    I've made it so that i can now call a var like this:

    var promotietijdwebinar = (item.GetValue("starttijdwebinar")-100);
    

    Can i format this with string.format?

  • Kevin Jump 2348 posts 14896 karma points MVP 8x c-trib
    Feb 06, 2017 @ 16:50
    Kevin Jump
    0

    hi ,

    i am not 100% sure where you are in your code and what object item is but...

    var promotietijdwebinar = 
              string.format("{0:00':'00}", (item.GetValue("starttijdwebinar")-100));
    

    would work i think - but it would make promotietijdwebinar a string, when it's previously an int - this might not be an issue but if it is...

    replacing it where you write it out. is the other option ...

    @promotietijdwebinar 
    

    could become

    @(string.format("{0:00':'00'}", promotietijdwebinar )) 
    

    and this would also work.

    Kevin

  • Lex Godthelp 15 posts 99 karma points
    Feb 06, 2017 @ 17:02
    Lex Godthelp
    0

    Hi Kevin,

    I'm sorry but its not working for me. Maybe that's because value starttijdwebinar isn't a DateTime?

    Here's the entire code:

    @inherits Umbraco.Web.Macros.PartialViewMacroPage
    @{
        var startNodeId = 1819;
        var startNode = Umbraco.Content(startNodeId);
        var currentdate = DateTime.Now.ToString("yyyy-MM-dd");
        var currenttime = DateTime.Now.ToString("HHmm");
        var selection = startNode.Webinarcontentgrid;
        int i = 1;
    
    foreach (var item in selection){
        if(item.contentgriddate >= currentdate && item.eindtijdwebinar > currenttime ){
            if(@i <= 1){
                var promotietijdwebinar = (item.GetValue("starttijdwebinar")-100);
    
                if(item.starttijdwebinar > currenttime && @promotietijdwebinar > currenttime){
                    <div class="wrapper">
                        <img src="https://webinar.leadkeeper.net/media/129038/background.jpg" alt="background img Microsoft Sessies" />
                            <div class="streammessage">
                                <img src="https://webinar.leadkeeper.net/media/129040/icon_wachten.png" alt="not started" />
                                <h1>De uitzending op deze pagina is nog niet begonnen.</h1>
                                <p>Inloggen is mogelijk op <strong>@item.contentgriddate</strong> vanaf <strong>@promotietijdwebinar</strong>.<br />
                                De uitzending start om <strong>@item.starttijdwebinar</strong>.</p>
                            </div>
                    </div>
                }
            } i++;
        }
    }           
    

    }

    Values eindtijdwebinar and starttijdwebinar are plain text values.

  • Kevin Jump 2348 posts 14896 karma points MVP 8x c-trib
    Feb 06, 2017 @ 17:13
    Kevin Jump
    0

    Hi,

    you have an @ in the if line .

            if(item.starttijdwebinar > currenttime && @promotietijdwebinar > currenttime){
    

    so remove that.

            if(item.starttijdwebinar > currenttime && promotietijdwebinar > currenttime){
    

    also, if you only care about how it's displayed you only need to put the formmating on the promotietijdwebinar value in the paragraph ?

    <h1>De uitzending op deze pagina is nog niet begonnen.</h1>
    <p>Inloggen is mogelijk op <strong>@item.contentgriddate</strong> vanaf <strong>@promotietijdwebinar</strong>.<br />
    De uitzending start om <strong>@item.starttijdwebinar</strong>.</p>
    

    so

    <strong>@(string.format("{0:00':'00}", promotietijdwebinar)</strong>
    

    should be enough ?

    this formatting only works when the value is an int.

    so either check the values are int,s or see if you can get them by type (for example with item.GetValue<int>("thing"))

    or you could parse them int.Parse(value) if they are strings.

    but i would have checking around a lot of this, because things like parse could fail..

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies