Converting to 24 hour-clock

Help with writing and running scripts

Converting to 24 hour-clock

Postby lm77054 » Mon Jul 02, 2012 6:16 am

============
BEFORE I BEGIN, ALLOW ME TO SAY THANKS FOR ANY HELP THAT CAN BE PROVIDED.
============
Here is what I've been trying to figure out. Lets say in a file I have these lines, amoung others, but these would be on individual lines by themselves:

USER1234 (06/21/2012 02:34:59 PM EST)
XYZ1 (06/21/2012 03:38:14 PM EST)
ABCD (06/22/2012 06:45:05 AM EST)

What I want to do, is for the lines to become:

USER1234 (2012_06_21 1434:59 HOURS ET)
XYZ1 (2012_06_21 1538:14 HOURS ET)
ABCD (2012_06_21 0645:05 HOURS ET)

The hours, minutes and seconds will always be two digits (e.g. "06" instead of "6"). So I want to detect the "AM" or "PM" and convert the hour into the 24-hour clock, while at the same time, removing the ":" between the hour/minute, and change the EST to ET. On that I'd be using this for, it will always display EST or EDT (or maybe EDST).

The usenames can be of any length 1-30 characters, but the time zone will always be EST, EDT or EDST. The only way I can think of is to have two if statements first to find the "AM" or "PM", then within that IF statement eliminate the "AM" or "PM", multiple statements to locate the year, month and day and manipulate them, and also find the first ":" and remove it.

I was hoping that there would be an easier way then multiple lines to handle the 24 possibilities (" 00:" through " 23:") of the hour to change them, for example (not synthetically correct, this is just to illustrate the idea):

Code: Select all
   If $line contains " AM" then
      if $line contains " 01:" then
          locate " 01:" change it to " 01"
          remove the "AM"
      endif

      if $line contains " 02:" then
          locate " 02:" change it to " 02"
          remove the "AM"
      endif
      blahblahblah
   endif

   If $line contains " PM" then
      if $line contains " 01:" then
          locate " 01:" change it to " 13"
          remove the "PM"
      endif

      if $line contains " 02:" then
          locate " 02:" change it to " 14"
          remove the "PM"
      endif
      blahblahblah
   endif

So on and so on with the other changes also. Does anyone have an idea of a better way?

Any help is appreciated, and I again say thanks in advance... even REGEX would be OK, I just haven't gotten the hand of REGEX.
lm77054
Basic User
Basic User
 
Posts: 15
Joined: Sat Feb 26, 2011 12:11 pm

Re: Converting to 24 hour-clock

Postby Mofi » Mon Jul 02, 2012 8:04 am

Using tagged expressions this is a simple task.

Code: Select all
if (UltraEdit.document.length > 0) {  // Is any file opened in UE?
   // Define environment for the conversion (replaces) to 24 hour format.
   UltraEdit.insertMode();
   UltraEdit.columnModeOff();
   UltraEdit.ueReOn();   // Regular expression engine is the UltraEdit engine.
   // The conversion is done with 13 case-sensitive regular expression Replace All.
   UltraEdit.activeDocument.findReplace.mode=0;
   UltraEdit.activeDocument.findReplace.matchCase=true;
   UltraEdit.activeDocument.findReplace.matchWord=false;
   UltraEdit.activeDocument.findReplace.regExp=true;
   UltraEdit.activeDocument.findReplace.searchDown=true;
   UltraEdit.activeDocument.findReplace.searchInColumn=false;
   UltraEdit.activeDocument.findReplace.preserveCase=false;
   UltraEdit.activeDocument.findReplace.replaceAll=true;
   UltraEdit.activeDocument.findReplace.replaceInAllOpen=false;
   UltraEdit.activeDocument.top();
   // The first expression is for all dates/times with AM value.
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^)^( [01][0-9]^):^([0-5][0-9]:[0-6][0-9]^) AM E[DS]++T", "^3_^1_^2^4^5 HOURS ET");
   // The other expressions are for 00 PM -> 12, 01 PM to 13, and so on.
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 00:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 12^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 01:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 13^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 02:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 14^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 03:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 15^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 04:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 16^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 05:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 17^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 06:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 18^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 07:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 19^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 08:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 20^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 09:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 21^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 10:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 22^4 HOURS ET");
   UltraEdit.activeDocument.findReplace.replace("^([01][0-9]^)/^([0-3][0-9]^)/^([12][0-9]+^) 11:^([0-5][0-9]:[0-6][0-9]^) PM E[DS]++T", "^3_^1_^2 23^4 HOURS ET");
}
User avatar
Mofi
Grand Master
Grand Master
 
Posts: 3937
Joined: Thu Jul 29, 2004 11:00 pm
Location: Vienna

Re: Converting to 24 hour-clock

Postby lm77054 » Mon Jul 02, 2012 6:50 pm

FANTASTIC! Worked great... thanks a lot!!!
lm77054
Basic User
Basic User
 
Posts: 15
Joined: Sat Feb 26, 2011 12:11 pm


Return to Scripts