I wanted to specify the output of a field from within my model so I added a date key to my $_schema:
models/Tags.php
<?php
    protected $_schema = array(
        'id'       => array('type' => 'integer', 'key'  => 'primary'),
        'title'    => array('type' => 'string'),
        'created'  => array('type' => 'integer', 'date' => 'F jS, Y - g:i a'),
        'modified' => array('type' => 'integer')
    );
?>
I store my time as an unsigned integer in the db (output of time()).
I want my base model to format any field that has the date key for output. I thought the best place to do that would be right after a find:
extensions/data/Model.php
<?php
    static::applyFilter('find', function($self, $params, $chain) {
        $schema = $self::schema();
        $entity = $chain->next($self, $params, $chain);
        foreach ($schema as $field => $options) {
            if (array_key_exists('date', $options)) {
                //format as a date
                $params['data'][$field] = $entity->formatDate($field, $options['date']);
            }
        }
        return $entity;
    });
    public function formatdate($entity, $field, $format, $timezone = 'Asia/Colombo') {
        $dt = new \DateTime();
        $tz = new \DateTimeZone($timezone);
        $dt->setTimestamp($entity->$field);
        $dt->setTimezone($tz);
        return $dt->format($format);
    }
?>
This doesn't seem to be working. When I execute a find all, this filter seems to get hit twice. The first time, $entity contains a count() of the results and only on the second hit does it contain the Records object. 
What am I doing wrong? How do I alter this so that simply doing <?= $tag->created; ?> in my view will format the date the way I want? This, essentially, needs to be an 'after filter', of sorts.
EDIT
If I can find a way to access the current model entity object (not the full namespaced path, $self contains that), I can probably solve my problem.