Search by

php-sap / datetime

grej

Extends PHP's DateTime class by SAP week, date, time and timestamp format.

Package info

github.com/php-sap/datetime

pkg:composer/php-sap/datetime

Statistics

Installs: 23 809

Dependents: 2

Suggesters: 0

Stars: 1

Open Issues: 0

v1.5.2 2026-09-01 10:08 UTC

README

License: MIT

Extends PHP's DateTime class by SAP week, date, time and timestamp format. Extends PHP's DateInterval class by SAP time format.

  • SAP week in format <year><week>
  • SAP date in format <year><month><day>
  • SAP time in format <hour><minute><second>
  • SAP timestamp in format <year><month><day><hour><minute><second>

Usage

composer require php-sap/datetime:~1.0.0

Parse a SAP week string into a DateTime object.

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_WEEK, '201846');
echo $dateTime->format('o \w\e\ek W') . PHP_EOL;
/**
 * Output: 2018 week 46
 */

Format a DateTime object as SAP week string

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = new SapDateTime('2018-10-19 08:09:10');
echo $dateTime->format(SapDateTime::SAP_WEEK) . PHP_EOL;
/**
 * Output: 201842
 */

Parse a SAP date string into a DateTime object

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_DATE, '20181101');
echo $dateTime->format('Y-m-d') . PHP_EOL;
/**
 * Output: 2018-11-01
 */

Format a DateTime object as SAP date

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = new SapDateTime('2018-12-31 09:10:11');
echo $dateTime->format(SapDateTime::SAP_DATE) . PHP_EOL;
/**
 * Output: 20181231
 */

Parse a SAP time string into a DateTime object

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_TIME, '132001');
echo $dateTime->format('H:i:s') . PHP_EOL;
/**
 * Output: 13-20-01
 */

Parse a SAP time string into a DateInterval object

This example uses 25 hours to demonstrate the usage of a DateInterval object in combination with a DateTime object. Please beware, that the format() method is more like PHP's sprintf() and less like date().

<?php
use phpsap\DateTime\SapDateInterval;
$time = SapDateInterval::createFromDateString('252003');
echo $time->format('%H:%I:%S') . PHP_EOL;
/**
 * Output: 25:20:03
 */
$date = new DateTime('2018-11-01 00:00:00');
$date->add($time);
echo $date->format('Y-m-d H:i:s');
/**
 * Output: 2018-11-02 01:20:03
 */

Format a DateTime object as SAP time

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = new SapDateTime('21:45:05');
echo $dateTime->format(SapDateTime::SAP_TIME) . PHP_EOL;
/**
 * Output: 214505
 */

Format a DateInterval object as SAP time

<?php
use phpsap\DateTime\SapDateInterval;
$time = new SapDateInterval('PTH21M45S05');
echo $time->format(SapDateInterval::SAP_TIME) . PHP_EOL;
/**
 * Output: 214505
 */

Parse a SAP timestamp into a DateTime object

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_TIMESTAMP, '20181019080910');
echo $dateTime->format('Y-m-d H:i:s') . PHP_EOL;
/**
 * Output: 2018-10-19 08:09:10
 */

Format a DateTime object as SAP timestamp

<?php
use phpsap\DateTime\SapDateTime;
$dateTime = new SapDateTime('2018-12-31 09:10:11');
echo $dateTime->format(SapDateTime::SAP_TIMESTAMP) . PHP_EOL;
/**
 * Output: 20181231091011
 */

Development

All development commands (install, test, lint, analyze, beautify, sniff, audit, validate) run via Docker through the Makefile, so no local PHP installation is needed. Run make help to list all targets. Most targets require PHP_VERSION, e.g.:

make install PHP_VERSION=8.1