Advertisement
brilliant_moves

TimeWords.java

Nov 24th, 2012
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 9.51 KB | None | 0 0
  1. import java.awt.*;
  2. import java.util.*;     // required for date function
  3. import javax.swing.*;       // for JFrame  
  4.  
  5. public class TimeWords {
  6.  
  7.     /**
  8.     *   Program:    TimeWords.java by Chris Clarke
  9.     *   Created:    15.07.2009
  10.     *   Purpose:    Display the time in words
  11.     *   Note:       Uses my "NumberToWord" class
  12.     *   Modified:   21.11.2012
  13.     */
  14.  
  15.     public static void main(String[] args) {
  16.         TimeWordsJFrame frame = new TimeWordsJFrame();
  17.         frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE);
  18.         // Set to a reasonable size.
  19.         frame.setSize(1024, 768);
  20.         frame.setVisible(true);
  21.     }
  22. }
  23.  
  24. class TimeWordsJFrame extends JFrame {
  25.  
  26.     public TimeWordsJFrame() {
  27.         setTitle("TimeWords by Chris Clarke");
  28.     }
  29.  
  30.     public void paint(Graphics g) {
  31.  
  32.         Font f = new Font("TimesNewRoman", Font.ITALIC, 36);
  33.         g.setFont(f);
  34.  
  35.         GregorianCalendar now = new GregorianCalendar();
  36.  
  37.         NumberToWord ntw = new NumberToWord();
  38.         int currentSecond = -1;
  39.  
  40.         do {
  41.             now = new GregorianCalendar();
  42.             int secNow = now.get(Calendar.SECOND);
  43.             if (currentSecond != secNow) {  // the second has changed
  44.                 currentSecond = secNow;
  45.                 g.setColor(Color.WHITE);
  46.                 g.fillRect(0, 0, WIDTH, HEIGHT);
  47.                 g.setColor(Color.BLACK);
  48.                 g.drawString(ntw.getTimeInWords(now.get(Calendar.HOUR_OF_DAY),
  49.                  now.get(Calendar.MINUTE)), 150, BASELINE);
  50.             }
  51.         } while (true);
  52.     } // end paint
  53.  
  54.     public static final int WIDTH=1024;
  55.     public static final int HEIGHT=768;
  56.     public static final int BASELINE=380;
  57.     public static final int SIZE=36;    // fontsize
  58. } // end class TimeWordsJFrame
  59.  
  60. class NumberToWord {
  61.  
  62.     /**
  63.     *   NumberToWord class created by Chris Clarke July 2009
  64.     *   For use with my TimeWords Java program
  65.     */
  66.  
  67.     public String getTimeInWords(int hour, int minute) {
  68.         String time = "It\'s "; // or you could say "The time is "
  69.         if (minute==0) {    // on the hour
  70.             if (hour == 12)
  71.                 time += "twelve noon";
  72.             else if (hour == 24 || hour == 0)
  73.                 time += "midnight";
  74.             else
  75.                 // output text ... o'clock
  76.                 time += getHour(hour)+" o\'clock"+getVerbose(hour);
  77.         } else {    // not on the hour
  78.             // it's ... minutes to the next hour
  79.             if (minute>32) {
  80.                 hour++;
  81.             }
  82.             if (minute==58||minute==59||minute==1||minute==2) {
  83.                 time += getMinute(minute)+" "+getHour(hour)+getVerbose(hour);
  84.                 return time;
  85.             }
  86.             time += getApproximateMinute(minute)+" "+getHour(hour)+getVerbose(hour);
  87.         }
  88.         return time;
  89.     }
  90.  
  91.     public String getConciseTimeInWords(int hour, int minute) {
  92.         String time="The time is ";
  93.         if (minute==0) {    // on the hour
  94.             // output text ... o'clock
  95.             time += getHour(hour)+" o\'clock";
  96.         } else {    // not on the hour
  97.             // it's ... minutes to the next hour
  98.             if (minute>30) {
  99.                 hour++;
  100.             }
  101.             time += getMinute(minute)+" "+getHour(hour);
  102.         }
  103.         return time;
  104.     }
  105.  
  106.     public String getMinute(int minute) {
  107.         String word="";
  108.         switch (minute) {
  109.             case 0: word = ""; break;
  110.             case 1: word = "a minute past"; break;
  111.             case 2: word = "two minutes past"; break;
  112.             case 3: word = "three minutes past"; break;
  113.             case 4: word = "four minutes past"; break;
  114.             case 5: word = "five past"; break;
  115.             case 6: word = "six minutes past"; break;
  116.             case 7: word = "seven minutes past"; break;
  117.             case 8: word = "eight minutes past"; break;
  118.             case 9: word = "nine minutes past"; break;
  119.             case 10: word = "ten past"; break;
  120.             case 11: word = "eleven minutes past"; break;
  121.             case 12: word = "twelve minutes past"; break;
  122.             case 13: word = "thirteen minutes past"; break;
  123.             case 14: word = "fourteen minutes past"; break;
  124.             case 15: word = "quarter past"; break;
  125.             case 16: word = "sixteen minutes past"; break;
  126.             case 17: word = "seventeen minutes past"; break;
  127.             case 18: word = "eighteen minutes past"; break;
  128.             case 19: word = "nineteen minutes past"; break;
  129.             case 20: word = "twenty past"; break;
  130.             case 21: word = "twenty-one minutes past"; break;
  131.             case 22: word = "twenty-two minutes past"; break;
  132.             case 23: word = "twenty-three minutes past"; break;
  133.             case 24: word = "twenty-four minutes past"; break;
  134.             case 25: word = "twenty-five past"; break;
  135.             case 26: word = "twenty-six minutes past"; break;
  136.             case 27: word = "twenty-seven minutes past"; break;
  137.             case 28: word = "twenty-eight minutes past"; break;
  138.             case 29: word = "twenty-nine minutes past"; break;
  139.             case 30: word = "half past"; break;
  140.             case 31: word = "twenty-nine minutes to"; break;
  141.             case 32: word = "twenty-eight minutes to"; break;
  142.             case 33: word = "twenty-seven minutes to"; break;
  143.             case 34: word = "twenty-six minutes to"; break;
  144.             case 35: word = "twenty-five to"; break;
  145.             case 36: word = "twenty-four minutes to"; break;
  146.             case 37: word = "twenty-three minutes to"; break;
  147.             case 38: word = "twenty-two minutes to"; break;
  148.             case 39: word = "twenty-one minutes to"; break;
  149.             case 40: word = "twenty to"; break;
  150.             case 41: word = "nineteen minutes to"; break;
  151.             case 42: word = "eighteen minutes to"; break;
  152.             case 43: word = "seventeen minutes to"; break;
  153.             case 44: word = "sixteen minutes to"; break;
  154.             case 45: word = "quarter to"; break;
  155.             case 46: word = "fourteen minutes to"; break;
  156.             case 47: word = "thirteen minutes to"; break;
  157.             case 48: word = "twelve minutes to"; break;
  158.             case 49: word = "eleven minutes to"; break;
  159.             case 50: word = "ten to"; break;
  160.             case 51: word = "nine minutes to"; break;
  161.             case 52: word = "eight minutes to"; break;
  162.             case 53: word = "seven minutes to"; break;
  163.             case 54: word = "six minutes to"; break;
  164.             case 55: word = "five to"; break;
  165.             case 56: word = "four minutes to"; break;
  166.             case 57: word = "three minutes to"; break;
  167.             case 58: word = "two minutes to"; break;
  168.             case 59: word = "a minute to"; break;
  169.             default: word = "MinuteError";
  170.         }
  171.         return word;
  172.     }
  173.  
  174.     public String getApproximateMinute(int minute) {
  175.         String word="";
  176.         switch (minute) {
  177.             case 0: word = ""; break;
  178.             case 1:
  179.             case 2: word = "just gone"; break;
  180.             case 3:
  181.             case 4: word = "nearly five past"; break;
  182.             case 5: word = "five past"; break;
  183.             case 6:
  184.             case 7: word = "just gone five past"; break;
  185.             case 8:
  186.             case 9: word = "nearly ten past"; break;
  187.             case 10: word = "ten past"; break;
  188.             case 11:
  189.             case 12: word = "just gone ten past"; break;
  190.             case 13:
  191.             case 14: word = "nearly quarter past"; break;
  192.             case 15: word = "quarter past"; break;
  193.             case 16:
  194.             case 17: word = "just gone quarter past"; break;
  195.             case 18:
  196.             case 19: word = "nearly twenty past"; break;
  197.             case 20: word = "twenty past"; break;
  198.             case 21:
  199.             case 22: word = "just gone twenty past"; break;
  200.             case 23:
  201.             case 24: word = "nearly twenty-five past"; break;
  202.             case 25: word = "twenty-five past"; break;
  203.             case 26:
  204.             case 27: word = "just gone twenty-five past"; break;
  205.             case 28:
  206.             case 29: word = "nearly half past"; break;
  207.             case 30: word = "half past"; break;
  208.             case 31:
  209.             case 32: word = "just gone half past"; break;
  210.             case 33:
  211.             case 34: word = "nearly twenty-five to"; break;
  212.             case 35: word = "twenty-five to"; break;
  213.             case 36:
  214.             case 37: word = "just gone twenty-five to"; break;
  215.             case 38:
  216.             case 39: word = "nearly twenty to"; break;
  217.             case 40: word = "twenty to"; break;
  218.             case 41:
  219.             case 42: word = "just gone twenty to"; break;
  220.             case 43:
  221.             case 44: word = "nearly quarter to"; break;
  222.             case 45: word = "quarter to"; break;
  223.             case 46:
  224.             case 47: word = "just gone quarter to"; break;
  225.             case 48:
  226.             case 49: word = "nearly ten to"; break;
  227.             case 50: word = "ten to"; break;
  228.             case 51:
  229.             case 52: word = "just gone ten to"; break;
  230.             case 53:
  231.             case 54: word = "nearly five to"; break;
  232.             case 55: word = "five to"; break;
  233.             case 56:
  234.             case 57: word = "just gone five to"; break;
  235.             case 58:
  236.             case 59: word = "nearly"; break;
  237.             default: word = "Error";
  238.         }
  239.         return word;
  240.     }
  241.  
  242.     public String getHour(int hr) {
  243.         if (hr>12) hr -= 12;
  244.         switch (hr) {
  245.             case 0: return "twelve";
  246.             case 1: return "one";
  247.             case 2: return "two";
  248.             case 3: return "three";
  249.             case 4: return "four";
  250.             case 5: return "five";
  251.             case 6: return "six";
  252.             case 7: return  "seven";
  253.             case 8: return  "eight";
  254.             case 9: return "nine";
  255.             case 10: return "ten";
  256.             case 11: return "eleven";
  257.             case 12: return "twelve";
  258.             default: return "GetHour error!";
  259.         }
  260.     }
  261.  
  262.     public String getVerbose(int hour) {
  263.         String word = "";
  264.         switch (hour) {
  265.             case 0: word = " midnight"; break;
  266.             case 1: word = " in the morning"; break;
  267.             case 2: word = " in the morning"; break;
  268.             case 3: word = " in the morning"; break;
  269.             case 4: word = " in the morning"; break;
  270.             case 5: word = " in the morning"; break;
  271.             case 6: word = " in the morning"; break;
  272.             case 7: word = " in the morning"; break;
  273.             case 8: word = " in the morning"; break;
  274.             case 9: word = " in the morning"; break;
  275.             case 10: word = " in the morning"; break;
  276.             case 11: word = " in the morning"; break;
  277.             case 12: word = " mid-day"; break;
  278.             case 13: word = " in the afternoon"; break;
  279.             case 14: word = " in the afternoon"; break;
  280.             case 15: word = " in the afternoon"; break;
  281.             case 16: word = " in the afternoon"; break;
  282.             case 17: word = " in the afternoon"; break;
  283.             case 18: word = " in the evening"; break;
  284.             case 19: word = " in the evening"; break;
  285.             case 20: word = " in the evening"; break;
  286.             case 21: word = " in the evening"; break;
  287.             case 22: word = " at night"; break;
  288.             case 23: word = " at night"; break;
  289.             case 24: word = " at night"; break;
  290.             default: word = "VerboseError!";
  291.         }
  292.         return word;
  293.     }
  294. } // end class NumberToWord
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement