acantor Posted March 31 Report Share Posted March 31 I'm working on a script that calculates future times. When the macro first runs, it notes the current time: Date/Time: Set %CurrentDateTimeDate% to the current date/time <DATE/TIME Flags="\xB0" Date="31-Mar-2024 3:48:26 p.m." Day_Offset="0" Month_Offset="0" Year_Offset="0" Hour_Offset="0" Minute_Offset="0" Second_Offset="0" Left="Center" Top="Center" Monitor="0" Variable="%CurrentDateTimeDate%" IsDateVar="TRUE"/> Each time the macro runs, I want the script to advance the clock 65 minutes from the previous run time. I think the way to do this in Macro Express is to convert a Date variable into a Decimal variable, add a "fudge factor" to the Decimal variable, and then convert the Decimal variable back to a Date variable: Convert Date/Time to Decimal: %CurrentDateTimeDate% => %CurrentDateTimeDec% Variable Modify Decimal: %CurrentDateTimePlusDec% = %CurrentDateTimeDec% + .044 Convert Decimal to Date/Time: %CurrentDateTimePlusDec% => %CurrentDateTimePlusDate% Text Box Display: <CONVERT DATE/TIME TO DECIMAL Source="%CurrentDateTimeDate%" Dest="%CurrentDateTimeDec%"/> <VARIABLE MODIFY DECIMAL Option="\x00" Destination="%CurrentDateTimePlusDec%" Value1="%CurrentDateTimeDec%" Value2=".044"/> <CONVERT DECIMAL TO DATE/TIME Source="%CurrentDateTimePlusDec%" Dest="%CurrentDateTimePlusDate%"/> <TEXT BOX DISPLAY Content="{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil Tahoma;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs20 %CurrentDateTimeDate%\r\n\\par %CurrentDateTimePlusDate%\r\n\\par }\r\n" Left="Center" Top="Center" Width="278" Height="200" Monitor="0" OnTop="TRUE" Keep_Focus="TRUE" Mode="\x00" Delay="0"/> Through trial-and-error experimentation, I've found that adding 0.044 to the Date variable adds about 65 minutes. I could do more trials to get closer to 65 minutes. But I'm hoping someone will know how to calculate the exact decimal amount. This would be easy if I want to add 65 minutes to the current time, rather than to the last run time. This does it nicely... but it's not what I need! Date/Time: Set %NextDateTimeDate% to an adjusted date/time <DATE/TIME Flags="\xB2" Date="31-Mar-2024 3:50:24 p.m." Day_Offset="0" Month_Offset="0" Year_Offset="0" Hour_Offset="0" Minute_Offset="65" Second_Offset="0" Left="Center" Top="Center" Monitor="0" Variable="%NextDateTimeDate%" IsDateVar="TRUE"/> Quote Link to comment Share on other sites More sharing options...
Cory Posted March 31 Report Share Posted March 31 Create a decimal and make ir's value by dividing 65 by 1440. However I think it better to add 65 minutes with the Date/Time command, Date/Time tab, Adjust the current date/time option, and add 65 minutes. Quote Link to comment Share on other sites More sharing options...
acantor Posted March 31 Author Report Share Posted March 31 I wish I could add 65 minutes, but I think I can only add it to the current time, not a time I specify via a variable. Thanks for the answer! I see that 65 is the number of minutes, but where does "1440" come from? Quote Link to comment Share on other sites More sharing options...
Cory Posted March 31 Report Share Posted March 31 The number of minutes in a day. Date/Time is at its core a decimal. 1 = 1 day. 1 Quote Link to comment Share on other sites More sharing options...
Cory Posted March 31 Report Share Posted March 31 I would use Variable Modify Date/Time, Options tab, Add option, Integer or Value, enter 65, then select minutes. 1 Quote Link to comment Share on other sites More sharing options...
acantor Posted April 1 Author Report Share Posted April 1 Thank you, Cory, for that suggestion. I got it to work. My 90-line spaghetti-like script (which converted Date variables to and from Decimal variables and failed in puzzling ways), is now a super-reliable 40-line script which doesn't use Decimal variables. Quote Link to comment Share on other sites More sharing options...
Cory Posted April 1 Report Share Posted April 1 You're welcome. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.