home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / bin / 822-date next >
Encoding:
Text File  |  2001-09-18  |  1.6 KB  |  57 lines

  1. #! /usr/bin/perl --
  2. # I hereby place this in the public domain - Ian Jackson, 1995.
  3. # Changes by Klee Dienes also placed in public domain (1997). 
  4.  
  5. # time structure:
  6. # [ sec min hour mday mon year wday yday isdst ]
  7.  
  8. @ARGV && die "usage: 822-date\n";
  9.  
  10. $curtime = time;
  11. @localtm = localtime ($curtime);
  12. $localtms = localtime ($curtime);
  13. @gmttm = gmtime ($curtime);
  14. $gmttms = gmtime ($curtime);
  15.  
  16. if ($localtm[0] != $gmttm[0]) {
  17.     die (sprintf ("local timezone differs from GMT by a non-minute interval\n"
  18.          . "local time: %s\n"
  19.          . "GMT time: %s\n", $localtms, $gmttms));
  20. }
  21.  
  22. $localmin = $localtm[1] + $localtm[2] * 60;
  23. $gmtmin = $gmttm[1] + $gmttm[2] * 60;
  24.  
  25. if ((($gmttm[6] + 1) % 7) == $localtm[6]) {
  26.     $localmin += 1440;
  27. } elsif ((($gmttm[6] - 1) % 7) == $localtm[6]) {
  28.     $localmin -= 1440;
  29. } elsif ($gmttm[6] == $localtm[6]) {
  30.     1;
  31. } else {
  32.     die ("822-date: local time offset greater than or equal to 24 hours\n");
  33. }
  34.  
  35. $offset = $localmin - $gmtmin;
  36. $offhour = $offset / 60;
  37. $offmin = abs ($offset % 60);
  38.  
  39. if (abs ($offhour) >= 24) { 
  40.     die ("822-date: local time offset greater than or equal to 24 hours\n");
  41. }
  42.  
  43. printf 
  44.     (
  45.      "%s, %2d %s %d %02d:%02d:%02d %s%02d%02d\n",
  46.      (Sun,Mon,Tue,Wed,Thu,Fri,Sat)[$localtm[6]], # day of week
  47.      $localtm[3],        # day of month
  48.      (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$localtm[4]], # month
  49.      $localtm[5]+1900,        # year
  50.      $localtm[2],        # hour
  51.      $localtm[1],        # minute
  52.      $localtm[0],        # sec
  53.      ($offset >= 0) ? '+' : '-',# TZ offset direction
  54.      abs ($offhour),        # TZ offset hour
  55.      $offmin,            # TZ offset minute
  56.      ) || die "822-date: output error: $!\n";
  57.