Format menu bar time to english words
I wrote a script to do this.

To show it in the menubar, use BitBar. A small app which creates menubar items from shell script output.



Once you download BitBar, save the following code into a file called lingualtime.1s.php then point BitBar to where you saved it.

#!/usr/bin/env php

&lt;?php

# &lt;bitbar.title&gt;Lingual Clock&lt;/bitbar.title&gt;
# &lt;bitbar.version&gt;v1.0&lt;/bitbar.version&gt;
# &lt;bitbar.author&gt;Stan Hutcheon&lt;/bitbar.author&gt;
# &lt;bitbar.author.github&gt;stnvh&lt;/bitbar.author.github&gt;
# &lt;bitbar.desc&gt;displays the current time in a sentence&lt;/bitbar.desc&gt;
# &lt;bitbar.dependencies&gt;php&lt;/bitbar.dependencies&gt;

$time = array_map(function($time) {
    return intval($time);
}, explode(' ', date('g i')));

$st = array('hour' =&gt; '', 'minute' =&gt; '');

$past = '%s past %s'; $to = '%s to %s';

$pastHalf = false;

function get($int) {
    $numbers = array(
        1 =&gt; 'one', 2 =&gt; 'two', 3 =&gt; 'three', 4 =&gt; 'four', 5 =&gt; 'five', 6 =&gt; 'six', 7 =&gt; 'seven', 8 =&gt; 'eight', 9 =&gt; 'nine',
        11 =&gt; 'eleven', 12 =&gt; 'twelve', 13 =&gt; 'thirteen', 14 =&gt; 'fourteen', 15 =&gt; 'fifteen', 16 =&gt; 'sixteen', 17 =&gt; 'seventeen', 18 =&gt; 'eighteen', 19 =&gt; 'nineteen',
        10 =&gt; 'ten', 20 =&gt; 'twenty', 30 =&gt; 'thirty', 40 =&gt; 'fourty', 50 =&gt; 'fifty'
    );

    return isset($numbers[$int]) ? $numbers[$int] : '';
}

if($time[1] &gt;= 35) {
    $pastHalf = true;

    $time[0] = $time[0] === 12 ? 1 : ++$time[0];
    $time[1] = 60 - $time[1];
}

# get lingual values
foreach(array('hour', 'minute') as $key =&gt; $part) {
    if($time[$key] &lt; 20) {
        $st[$part] = get($time[$key]);
    } else {
        $currTenth = floor($time[$key] / 10) * 10;
        $currRem = $time[$key] - $currTenth;

        $ling = get($currTenth);
        if($ext = get($currRem)) {
            $ling .= '-' . $ext;
        }

        $st[$part] = $ling;
    }
}

printf(($pastHalf ? $to : $past) . PHP_EOL, $st['minute'], $st['hour']);