• Run JS with a different TZ

    From nelgin@VERT/EOTLBBS to All on Thu Oct 12 13:29:08 2023
    I have a script that I want to run using a different timezone. My system is America/Chicago and I want users to run it from the xtrn section as America/New_York.


    My original ideas was to create a bash wrapper script to set TZ and call jsexec but wont work since it requires various bbs and console functions to work properly.

    Also, javascript doesn't appear to let you set an environment variable like you can with other languages such as perl.

    Since I don't want to run my server or BBS in eastern time, does anyone have any suggestons on a workaround, other than to rewrtite it in perl? :)
    ---
    þ Synchronet þ End Of The Line BBS - endofthelinebbs.com
  • From Digital Man@VERT to nelgin on Thu Oct 12 12:03:23 2023
    Re: Run JS with a different TZ
    By: nelgin to All on Thu Oct 12 2023 01:29 pm

    I have a script that I want to run using a different timezone. My system is America/Chicago and I want users to run it from the xtrn section as America/New_York.


    My original ideas was to create a bash wrapper script to set TZ and call jsexec but wont work since it requires various bbs and console functions to work properly.

    Also, javascript doesn't appear to let you set an environment variable like you can with other languages such as perl.

    Since I don't want to run my server or BBS in eastern time, does anyone have any suggestons on a workaround, other than to rewrtite it in perl? :)

    How does your script use the timezone currently? Could that usage be updated to allow you to control the timezone used at run time (e.g. with a command-line option)?
    --
    digital man (rob)

    Synchronet "Real Fact" #59:
    Synchronet swag used to be available for purchase at cafepress.com/synchronet Norco, CA WX: 79.0øF, 24.0% humidity, 4 mph NW wind, 0.00 inches rain/24hrs
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From nelgin@VERT/EOTLBBS to Digital Man on Fri Oct 13 18:57:42 2023
    Re: Run JS with a different TZ
    By: Digital Man to nelgin on Fri Oct 13 2023 13:33:06

    Okay, so if it's in UTC, it's in central *or* eastern US. It's UTC.

    Example:
    jsexec '-r Date("2023-10-13T23:30:00Z")'

    jsexec '-r Date("2023-10-13T23:30:00Z")'
    Result (string): Fri Oct 13 2023 18:54:33 GMT-0500 (CDT)

    Right, which gives a result in central time. I want the result in eastern time, as per:

    TZ="America/New_York" jsexec '-r Date("2023-10-13T23:30:00Z")'
    Result (string): Fri Oct 13 2023 19:55:42 GMT-0400 (EDT)

    However, there's no way to set TZ before executing the script from the xtrn section since I'm not calling jsexec.
    ---
    þ Synchronet þ End Of The Line BBS - endofthelinebbs.com
  • From Digital Man@VERT to nelgin on Fri Oct 13 21:06:05 2023
    Re: Run JS with a different TZ
    By: nelgin to Digital Man on Fri Oct 13 2023 06:57 pm

    Re: Run JS with a different TZ
    By: Digital Man to nelgin on Fri Oct 13 2023 13:33:06

    Okay, so if it's in UTC, it's in central *or* eastern US. It's UTC.

    Example:
    jsexec '-r Date("2023-10-13T23:30:00Z")'

    jsexec '-r Date("2023-10-13T23:30:00Z")'
    Result (string): Fri Oct 13 2023 18:54:33 GMT-0500 (CDT)

    Right, which gives a result in central time. I want the result in eastern time, as per:

    TZ="America/New_York" jsexec '-r Date("2023-10-13T23:30:00Z")'
    Result (string): Fri Oct 13 2023 19:55:42 GMT-0400 (EDT)

    However, there's no way to set TZ before executing the script from the xtrn section since I'm not calling jsexec.

    Right. And environment variables are shared among on threads (e.g. nodes) of the sbbs instance, so even if you could set the TZ environment variable, you'd be changing for all threads. Likely not what you want.

    There's a whole new JS Date thing in the works for some future version of JavaScript, but that'll be aways away from being integrated with sbbs.

    I think the easiest thing to do would be to adjust the UTC value based on the UTC offset for central time (yeah, it'll change with DST) and then use Date.toUTCString() to convert it to a string.
    --
    digital man (rob)

    Rush quote #87:
    Shifting shafts of shining weave the fabric of their dreams .. Jacob's Ladder Norco, CA WX: 66.1øF, 75.0% humidity, 0 mph SSW wind, 0.00 inches rain/24hrs ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From nelgin@VERT/EOTLBBS to Digital Man on Sat Oct 14 01:39:34 2023
    Re: Run JS with a different TZ
    By: Digital Man to nelgin on Fri Oct 13 2023 21:06:05

    Right. And environment variables are shared among on threads (e.g. nodes) of the sbbs instance, so even if you could set the TZ environment variable, you'd be changing for all threads. Likely not what you want.

    Definitely not what I want.

    There's a whole new JS Date thing in the works for some future version of JavaScript, but that'll be aways away from being integrated with sbbs.

    I think the easiest thing to do would be to adjust the UTC value based on the UTC offset for central time (yeah, it'll change with DST) and then use Date.toUTCString() to convert it to a string.

    I'll probably stick with using the moment-timezone library then. I use it in my weather script so I'm not unfamiliar with it, but I was trying to see if there was a more native way to handle timezone conversions.

    Thanks,
    ---
    þ Synchronet þ End Of The Line BBS - endofthelinebbs.com
  • From Charles Blackburn@VERT/THEFBO to nelgin on Sat Oct 14 10:58:43 2023
    Re: Run JS with a different TZ
    By: nelgin to Digital Man on Fri Oct 13 2023 18:57:42

    Re: Run JS with a different TZ
    By: Digital Man to nelgin on Fri Oct 13 2023 13:33:06

    Okay, so if it's in UTC, it's in central *or* eastern US. It's UTC.

    Example:
    jsexec '-r Date("2023-10-13T23:30:00Z")'

    jsexec '-r Date("2023-10-13T23:30:00Z")'
    Result (string): Fri Oct 13 2023 18:54:33 GMT-0500 (CDT)

    if you know it's in UTC format then something like this should work (first result from google)

    https://stackoverflow.com/questions/10087819/convert-date-to-another-timezone-in-javascript


    ##### code from the above url


    function convertTZ(date, tzString) {
    return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));
    }

    // usage: Asia/Jakarta is GMT+7
    convertTZ("2012/04/20 10:10:30 +0000", "Asia/Jakarta") // Tue Apr 20 2012 17:10:30 GMT+0700 (Western Indonesia Time)

    // Resulting value is regular Date() object
    const convertedDate = convertTZ("2012/04/20 10:10:30 +0000", "Asia/Jakarta") convertedDate.getHours(); // 17

    // Bonus: You can also put Date object to first arg
    const date = new Date()
    convertTZ(date, "Asia/Jakarta") // current date-time in jakarta.



    charlie

    ---
    þ Synchronet þ My Brand-New BBS
  • From nelgin@VERT/EOTLBBS to Charles Blackburn on Sat Oct 14 22:09:23 2023
    Re: Run JS with a different TZ
    By: Charles Blackburn to nelgin on Sat Oct 14 2023 10:58:43

    function convertTZ(date, tzString) {
    return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));
    }

    You did actually try this and discovred it doesn't actually work, right?
    ---
    þ Synchronet þ End Of The Line BBS - endofthelinebbs.com
  • From Charles Blackburn@VERT/THEFBO to nelgin on Sun Oct 15 17:55:26 2023
    Re: Run JS with a different TZ
    By: nelgin to Charles Blackburn on Sat Oct 14 2023 22:09:23

    Re: Run JS with a different TZ
    By: Charles Blackburn to nelgin on Sat Oct 14 2023 10:58:43

    function convertTZ(date, tzString) {
    return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));
    }

    You did actually try this and discovred it doesn't actually work, right?

    can't say i did, i'm not a jS programmer, but was just throwing an idea out. but there should be a way to do it. In C/Python you can do it
    in a similar way. if the string is in UTC you should be able to internally convert it to whatever TZ you want.

    Charlie

    ---
    þ Synchronet þ My Brand-New BBS
  • From MRO@VERT/BBSESINF to nelgin on Sun Oct 15 22:03:18 2023
    Re: Run JS with a different TZ
    By: nelgin to Charles Blackburn on Sat Oct 14 2023 10:09 pm

    Re: Run JS with a different TZ
    By: Charles Blackburn to nelgin on Sat Oct 14 2023 10:58:43

    function convertTZ(date, tzString) {
    return new Date((typeof date === "string" ? new Date(date) : date).toLocaleString("en-US", {timeZone: tzString}));
    }

    You did actually try this and discovred it doesn't actually work, right?

    this looks like a job for Chad Jipiti
    ---
    þ Synchronet þ ::: BBSES.info - free BBS services :::
  • From nelgin@VERT/EOTLBBS to Charles Blackburn on Mon Oct 16 02:06:42 2023
    Re: Run JS with a different TZ
    By: Charles Blackburn to nelgin on Sun Oct 15 2023 17:55:26

    can't say i did, i'm not a jS programmer, but was just throwing an idea out. but there should be a way to do it. In C/Python you can do it
    in a similar way. if the string is in UTC you should be able to internally convert it to whatever TZ you want.

    Unforuntately, there isn't. That's why there's moment-timezone and Luxon.

    Unfortunately Luxon is too modern to work with the sbbs version of js. moment-timezone is no longer developed or supported but at least it works.
    ---
    þ Synchronet þ End Of The Line BBS - endofthelinebbs.com