Hi, I have some dialplan code that is trying to convert 12 hour time with AM/PM to 24 hour format. The code has something like this: Exten => 2,1,ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) Earlier on in the dialplan HOUR_SELECTED is set to 12. When they press option 2 they are selecting PM. If the time is from 1PM to 11PM then I want to add 12 to the number (so if it's 1 make it 13 etc.). When I run the above the logs show the result as false yet if the user sets HOUR_SELECTED to 12 then after this line of dialplan code it gets switched to 24. What am I doing wrong here? The exact DP code is: Exten => 2, 1, Noop(BEFORE CHECK HOUR_SELECTED is ${HOUR_SELECTED}) same => n, ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) same => n, Noop(AFTER CHECK HOUR_SELECTED IS ${HOUR_SELECTED}) And the output of the logs is: [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing [2 at am_pm_select:1] NoOp("SIP/204.145.219.31-000081c6", "BEFORE CHECK HOUR_SELECTED is 12") in new stack [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of 'HOUR_SELECTED' is '12' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function MATH(12<12) result is 'FALSE' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of 'HOUR_SELECTED' is '12' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function MATH(12+12,int) result is '24' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'ExecIf' [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing [2 at am_pm_select:2] ExecIf("SIP/204.145.219.31-000081c6", "FALSE?Set(HOUR_SELECTED=24)") in new stack [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of 'HOUR_SELECTED' is '24' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'NoOp' [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing [2 at am_pm_select:3] NoOp("SIP/204.145.219.31-000081c6", "AFTER CHECK HOUR_SELECTED IS 24") in new stack TIA. Dovid -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20200213/685d3dd1/attachment.html>
Try using the STRFIME function instead of doing this by hand. https://wiki.asterisk.org/wiki/display/AST/Function_STRFTIME *%H* The hour as a decimal number using a 24-hour clock (range 00 to 23). *%I* The hour as a decimal number using a 12-hour clock (range 01 to 12). On Thu, Feb 13, 2020 at 3:49 AM Dovid Bender <dovid at telecurve.com> wrote:> Hi, > > I have some dialplan code that is trying to convert 12 hour time with > AM/PM to 24 hour format. The code has something like this: > Exten => > 2,1,ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) > > Earlier on in the dialplan HOUR_SELECTED is set to 12. When they press > option 2 they are selecting PM. If the time is from 1PM to 11PM then I want > to add 12 to the number (so if it's 1 make it 13 etc.). When I run the > above the logs show the result as false yet if the user sets HOUR_SELECTED > to 12 then after this line of dialplan code it gets switched to 24. What am > I doing wrong here? > > The exact DP code is: > Exten => 2, 1, Noop(BEFORE CHECK HOUR_SELECTED is ${HOUR_SELECTED}) > same => n, > ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) > same => n, Noop(AFTER CHECK HOUR_SELECTED IS ${HOUR_SELECTED}) > > And the output of the logs is: > [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing > [2 at am_pm_select:1] NoOp("SIP/204.145.219.31-000081c6", "BEFORE CHECK > HOUR_SELECTED is 12") in new stack > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of > 'HOUR_SELECTED' is '12' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function > MATH(12<12) result is 'FALSE' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of > 'HOUR_SELECTED' is '12' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function > MATH(12+12,int) result is '24' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'ExecIf' > [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing > [2 at am_pm_select:2] ExecIf("SIP/204.145.219.31-000081c6", > "FALSE?Set(HOUR_SELECTED=24)") in new stack > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of > 'HOUR_SELECTED' is '24' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'NoOp' > [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing > [2 at am_pm_select:3] NoOp("SIP/204.145.219.31-000081c6", "AFTER CHECK > HOUR_SELECTED IS 24") in new stack > > > TIA. > > Dovid > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > Check out the new Asterisk community forum at: > https://community.asterisk.org/ > > New to Asterisk? Start here: > https://wiki.asterisk.org/wiki/display/AST/Getting+Started > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users-- A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects. ---Heinlein -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20200213/765cb198/attachment.html>
John,>From looking at the wiki won't STRFIME just give me what I need based onthe unix time that I put in? What I am actually looking to do is convert over from 12 hour format to 24 (unless strftime does just that and I don't kow what am I am doing?). On Thu, Feb 13, 2020 at 12:03 PM John Kiniston <johnkiniston at gmail.com> wrote:> Try using the STRFIME function instead of doing this by hand. > > https://wiki.asterisk.org/wiki/display/AST/Function_STRFTIME > > *%H* > > The hour as a decimal number using a 24-hour clock (range 00 to 23). > > *%I* > > The hour as a decimal number using a 12-hour clock (range 01 to 12). > > On Thu, Feb 13, 2020 at 3:49 AM Dovid Bender <dovid at telecurve.com> wrote: > >> Hi, >> >> I have some dialplan code that is trying to convert 12 hour time with >> AM/PM to 24 hour format. The code has something like this: >> Exten => >> 2,1,ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) >> >> Earlier on in the dialplan HOUR_SELECTED is set to 12. When they press >> option 2 they are selecting PM. If the time is from 1PM to 11PM then I want >> to add 12 to the number (so if it's 1 make it 13 etc.). When I run the >> above the logs show the result as false yet if the user sets HOUR_SELECTED >> to 12 then after this line of dialplan code it gets switched to 24. What am >> I doing wrong here? >> >> The exact DP code is: >> Exten => 2, 1, Noop(BEFORE CHECK HOUR_SELECTED is ${HOUR_SELECTED}) >> same => n, >> ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) >> same => n, Noop(AFTER CHECK HOUR_SELECTED IS ${HOUR_SELECTED}) >> >> And the output of the logs is: >> [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing >> [2 at am_pm_select:1] NoOp("SIP/204.145.219.31-000081c6", "BEFORE CHECK >> HOUR_SELECTED is 12") in new stack >> [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of >> 'HOUR_SELECTED' is '12' >> [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function >> MATH(12<12) result is 'FALSE' >> [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of >> 'HOUR_SELECTED' is '12' >> [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function >> MATH(12+12,int) result is '24' >> [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'ExecIf' >> [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing >> [2 at am_pm_select:2] ExecIf("SIP/204.145.219.31-000081c6", >> "FALSE?Set(HOUR_SELECTED=24)") in new stack >> [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of >> 'HOUR_SELECTED' is '24' >> [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'NoOp' >> [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing >> [2 at am_pm_select:3] NoOp("SIP/204.145.219.31-000081c6", "AFTER CHECK >> HOUR_SELECTED IS 24") in new stack >> >> >> TIA. >> >> Dovid >> >> -- >> _____________________________________________________________________ >> -- Bandwidth and Colocation Provided by http://www.api-digital.com -- >> >> Check out the new Asterisk community forum at: >> https://community.asterisk.org/ >> >> New to Asterisk? Start here: >> https://wiki.asterisk.org/wiki/display/AST/Getting+Started >> >> asterisk-users mailing list >> To UNSUBSCRIBE or update options visit: >> http://lists.digium.com/mailman/listinfo/asterisk-users > > > > -- > A human being should be able to change a diaper, plan an invasion, butcher > a hog, conn a ship, design a building, write a sonnet, balance accounts, > build a wall, set a bone, comfort the dying, take orders, give orders, > cooperate, act alone, solve equations, analyze a new problem, pitch manure, > program a computer, cook a tasty meal, fight efficiently, die gallantly. > Specialization is for insects. > ---Heinlein > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > Check out the new Asterisk community forum at: > https://community.asterisk.org/ > > New to Asterisk? Start here: > https://wiki.asterisk.org/wiki/display/AST/Getting+Started > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20200213/1ff2dc17/attachment.html>
Is HOUR_SELECTED a floating-point number (e.g. 11.99999999999)? If so, you need to account for that in your comparison. --Don From: asterisk-users [mailto:asterisk-users-bounces at lists.digium.com] On Behalf Of Dovid Bender Sent: Thursday, February 13, 2020 4:47 AM To: Asterisk Users Mailing List - Non-Commercial Discussion Subject: [asterisk-users] Help with FUNC_MATH Hi, I have some dialplan code that is trying to convert 12 hour time with AM/PM to 24 hour format. The code has something like this: Exten => 2,1,ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) Earlier on in the dialplan HOUR_SELECTED is set to 12. When they press option 2 they are selecting PM. If the time is from 1PM to 11PM then I want to add 12 to the number (so if it's 1 make it 13 etc.). When I run the above the logs show the result as false yet if the user sets HOUR_SELECTED to 12 then after this line of dialplan code it gets switched to 24. What am I doing wrong here? The exact DP code is: Exten => 2, 1, Noop(BEFORE CHECK HOUR_SELECTED is ${HOUR_SELECTED}) same => n, ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) same => n, Noop(AFTER CHECK HOUR_SELECTED IS ${HOUR_SELECTED}) And the output of the logs is: [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing [2 at am_pm_select:1] NoOp("SIP/204.145.219.31-000081c6", "BEFORE CHECK HOUR_SELECTED is 12") in new stack [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of 'HOUR_SELECTED' is '12' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function MATH(12<12) result is 'FALSE' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of 'HOUR_SELECTED' is '12' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function MATH(12+12,int) result is '24' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'ExecIf' [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing [2 at am_pm_select:2] ExecIf("SIP/204.145.219.31-000081c6", "FALSE?Set(HOUR_SELECTED=24)") in new stack [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of 'HOUR_SELECTED' is '24' [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'NoOp' [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing [2 at am_pm_select:3] NoOp("SIP/204.145.219.31-000081c6", "AFTER CHECK HOUR_SELECTED IS 24") in new stack TIA. Dovid -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20200213/67c7e7f3/attachment.html>
HOUR_SELECTED is going to be 1-12 On Thu, Feb 13, 2020 at 2:05 PM Don Kelly <dk at donkelly.biz> wrote:> Is HOUR_SELECTED a floating-point number (e.g. 11.99999999999)? If so, you > need to account for that in your comparison. > > > > --Don > > > > > > *From:* asterisk-users [mailto:asterisk-users-bounces at lists.digium.com] *On > Behalf Of *Dovid Bender > *Sent:* Thursday, February 13, 2020 4:47 AM > *To:* Asterisk Users Mailing List - Non-Commercial Discussion > *Subject:* [asterisk-users] Help with FUNC_MATH > > > > Hi, > > > > I have some dialplan code that is trying to convert 12 hour time with > AM/PM to 24 hour format. The code has something like this: > Exten => > 2,1,ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) > > > > Earlier on in the dialplan HOUR_SELECTED is set to 12. When they press > option 2 they are selecting PM. If the time is from 1PM to 11PM then I want > to add 12 to the number (so if it's 1 make it 13 etc.). When I run the > above the logs show the result as false yet if the user sets HOUR_SELECTED > to 12 then after this line of dialplan code it gets switched to 24. What am > I doing wrong here? > > > > The exact DP code is: > > Exten => 2, 1, Noop(BEFORE CHECK HOUR_SELECTED is ${HOUR_SELECTED}) > same => n, > ExecIf(${MATH(${HOUR_SELECTED}<12)}?Set(HOUR_SELECTED=${MATH(${HOUR_SELECTED}+12,int)})) > same => n, Noop(AFTER CHECK HOUR_SELECTED IS ${HOUR_SELECTED}) > > > > And the output of the logs is: > > [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing > [2 at am_pm_select:1] NoOp("SIP/204.145.219.31-000081c6", "BEFORE CHECK > HOUR_SELECTED is 12") in new stack > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of > 'HOUR_SELECTED' is '12' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function > MATH(12<12) result is 'FALSE' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of > 'HOUR_SELECTED' is '12' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Function > MATH(12+12,int) result is '24' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'ExecIf' > [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing > [2 at am_pm_select:2] ExecIf("SIP/204.145.219.31-000081c6", > "FALSE?Set(HOUR_SELECTED=24)") in new stack > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx_variables.c: Result of > 'HOUR_SELECTED' is '24' > [Feb 13 10:46:18] DEBUG[1580][C-00007bc6] pbx.c: Launching 'NoOp' > [Feb 13 10:46:18] VERBOSE[1580][C-00007bc6] pbx.c: Executing > [2 at am_pm_select:3] NoOp("SIP/204.145.219.31-000081c6", "AFTER CHECK > HOUR_SELECTED IS 24") in new stack > > > > > > TIA. > > > > Dovid > > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > Check out the new Asterisk community forum at: > https://community.asterisk.org/ > > New to Asterisk? Start here: > https://wiki.asterisk.org/wiki/display/AST/Getting+Started > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20200213/4dfb5f0e/attachment.html>