lsolesen\pel\PelEntryTime::setValue PHP Method

setValue() public method

Update the timestamp held by this entry.
public setValue ( $timestamp, $type = self::UNIX_TIMESTAMP )
    public function setValue($timestamp, $type = self::UNIX_TIMESTAMP)
    {
        switch ($type) {
            case self::UNIX_TIMESTAMP:
                $this->day_count = $this->convertUnixToJd($timestamp);
                $this->seconds = $timestamp % 86400;
                break;
            case self::EXIF_STRING:
                /* Clean the timestamp: some timestamps are broken other
                 * separators than ':' and ' '. */
                $d = preg_split('/[^0-9]+/', $timestamp);
                for ($i = 0; $i < 6; $i++) {
                    if (empty($d[$i])) {
                        $d[$i] = 0;
                    }
                }
                $this->day_count = $this->convertGregorianToJd($d[0], $d[1], $d[2]);
                $this->seconds = $d[3] * 3600 + $d[4] * 60 + $d[5];
                break;
            case self::JULIAN_DAY_COUNT:
                $this->day_count = (int) floor($timestamp);
                $this->seconds = (int) (86400 * ($timestamp - floor($timestamp)));
                break;
            default:
                throw new PelInvalidArgumentException('Expected UNIX_TIMESTAMP (%d), ' . 'EXIF_STRING (%d), or ' . 'JULIAN_DAY_COUNT (%d) for $type, ' . 'got %d.', self::UNIX_TIMESTAMP, self::EXIF_STRING, self::JULIAN_DAY_COUNT, $type);
        }
        /*
         * Now finally update the string which will be used when this is
         * turned into bytes.
         */
        parent::setValue($this->getValue(self::EXIF_STRING));
    }

Usage Example

Beispiel #1
0
 function testTime()
 {
     $entry = new PelEntryTime(42, 10);
     $this->assertEquals($entry->getComponents(), 20);
     $this->assertEquals($entry->getValue(), 10);
     $this->assertEquals($entry->getValue(PelEntryTime::UNIX_TIMESTAMP), 10);
     $this->assertEquals($entry->getValue(PelEntryTime::EXIF_STRING), '1970:01:01 00:00:10');
     $this->assertEquals($entry->getValue(PelEntryTime::JULIAN_DAY_COUNT), 2440588 + 10 / 86400);
     $this->assertEquals($entry->getText(), '1970:01:01 00:00:10');
     // Malformed Exif timestamp.
     $entry->setValue('1970!01-01 00 00 30', PelEntryTime::EXIF_STRING);
     $this->assertEquals($entry->getValue(), 30);
     $entry->setValue(2415021.75, PelEntryTime::JULIAN_DAY_COUNT);
     // This is Jan 1st 1900 at 18:00, outside the range of a UNIX
     // timestamp:
     $this->assertEquals($entry->getValue(), false);
     $this->assertEquals($entry->getValue(PelEntryTime::EXIF_STRING), '1900:01:01 18:00:00');
     $this->assertEquals($entry->getValue(PelEntryTime::JULIAN_DAY_COUNT), 2415021.75);
     $entry->setValue('0000:00:00 00:00:00', PelEntryTime::EXIF_STRING);
     $this->assertEquals($entry->getValue(), false);
     $this->assertEquals($entry->getValue(PelEntryTime::EXIF_STRING), '0000:00:00 00:00:00');
     $this->assertEquals($entry->getValue(PelEntryTime::JULIAN_DAY_COUNT), 0);
     $entry->setValue('9999:12:31 23:59:59', PelEntryTime::EXIF_STRING);
     // this test will fail on 32bit machines
     $this->assertEquals($entry->getValue(), 253402300799);
     $this->assertEquals($entry->getValue(PelEntryTime::EXIF_STRING), '9999:12:31 23:59:59');
     $this->assertEquals($entry->getValue(PelEntryTime::JULIAN_DAY_COUNT), 5373484 + 86399 / 86400);
     // Check day roll-over for SF bug #1699489.
     $entry->setValue('2007:04:23 23:30:00', PelEntryTime::EXIF_STRING);
     $t = $entry->getValue(PelEntryTime::UNIX_TIMESTAMP);
     $entry->setValue($t + 3600);
     $this->assertEquals($entry->getValue(PelEntryTime::EXIF_STRING), '2007:04:24 00:30:00');
 }
All Usage Examples Of lsolesen\pel\PelEntryTime::setValue