|
| 1 | +## DateTime conversions for SAP |
| 2 | + |
| 3 | +SAP defines week, date, time and timestamp formats, that differ from the ISO |
| 4 | + ones. Parsing these formats is currently not supported by |
| 5 | + [PHPs DateTime class][phpdatetime]. |
| 6 | + |
| 7 | +Format | SAP | ISO |
| 8 | +--------- | ------------------------------------------ | ----------------------------------------- |
| 9 | +week | `<calendar-week-year><calendar-week>` | `<calendar-week-year>W<calendar-week>` |
| 10 | +date | `<year><month><day>` | `<year>-<month>-<day>` |
| 11 | +time | `<hour><minute><second>` | `<hour>-<minute>-<second>` |
| 12 | +timestamp | `<year><month><day><hour><minute><second>` | `<seconds-since-1970-01-01-00:00:00-UTC>` |
| 13 | + |
| 14 | +[SapDateTime][sapdatetime] extends [PHPs DateTime class][phpdatetime] by these |
| 15 | + SAP-specific formats: |
| 16 | + |
| 17 | +* `SAP_WEEK` |
| 18 | +* `SAP_DATE` |
| 19 | +* `SAP_TIME` |
| 20 | +* `SAP_TIMESTAMP` |
| 21 | + |
| 22 | +## Usage |
| 23 | + |
| 24 | +```sh |
| 25 | +composer require php-sap/datetime:^1.1 |
| 26 | +``` |
| 27 | + |
| 28 | +### Parse a SAP week string into a DateTime object. |
| 29 | + |
| 30 | +```php |
| 31 | +<?php |
| 32 | +use phpsap\DateTime\SapDateTime; |
| 33 | +$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_WEEK, '201846'); |
| 34 | +echo $dateTime->format('o \w\e\ek W') . PHP_EOL; |
| 35 | +/** |
| 36 | + * Output: 2018 week 46 |
| 37 | + */ |
| 38 | +``` |
| 39 | + |
| 40 | +### Format a DateTime object as SAP week string |
| 41 | + |
| 42 | +```php |
| 43 | +<?php |
| 44 | +use phpsap\DateTime\SapDateTime; |
| 45 | +$dateTime = new SapDateTime('2018-10-19 08:09:10'); |
| 46 | +echo $dateTime->format(SapDateTime::SAP_WEEK) . PHP_EOL; |
| 47 | +/** |
| 48 | + * Output: 201842 |
| 49 | + */ |
| 50 | +``` |
| 51 | + |
| 52 | +### Parse a SAP date string into a DateTime object |
| 53 | + |
| 54 | +```php |
| 55 | +<?php |
| 56 | +use phpsap\DateTime\SapDateTime; |
| 57 | +$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_DATE, '20181101'); |
| 58 | +echo $dateTime->format('Y-m-d') . PHP_EOL; |
| 59 | +/** |
| 60 | + * Output: 2018-11-01 |
| 61 | + */ |
| 62 | +``` |
| 63 | + |
| 64 | +### Format a DateTime object as SAP date |
| 65 | + |
| 66 | +```php |
| 67 | +<?php |
| 68 | +use phpsap\DateTime\SapDateTime; |
| 69 | +$dateTime = new SapDateTime('2018-12-31 09:10:11'); |
| 70 | +echo $dateTime->format(SapDateTime::SAP_DATE) . PHP_EOL; |
| 71 | +/** |
| 72 | + * Output: 20181231 |
| 73 | + */ |
| 74 | +``` |
| 75 | + |
| 76 | +### Parse a SAP time string into a DateTime object |
| 77 | + |
| 78 | +```php |
| 79 | +<?php |
| 80 | +use phpsap\DateTime\SapDateTime; |
| 81 | +$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_TIME, '132001'); |
| 82 | +echo $dateTime->format('H:i:s') . PHP_EOL; |
| 83 | +/** |
| 84 | + * Output: 13-20-01 |
| 85 | + */ |
| 86 | +``` |
| 87 | + |
| 88 | +### Format a DateTime object as SAP time |
| 89 | + |
| 90 | +```php |
| 91 | +<?php |
| 92 | +use phpsap\DateTime\SapDateTime; |
| 93 | +$dateTime = new SapDateTime('21:45:05'); |
| 94 | +echo $dateTime->format(SapDateTime::SAP_TIME) . PHP_EOL; |
| 95 | +/** |
| 96 | + * Output: 214505 |
| 97 | + */ |
| 98 | +``` |
| 99 | + |
| 100 | +### Parse a SAP timestamp into a DateTime object |
| 101 | + |
| 102 | +```php |
| 103 | +<?php |
| 104 | +use phpsap\DateTime\SapDateTime; |
| 105 | +$dateTime = SapDateTime::createFromFormat(SapDateTime::SAP_TIMESTAMP, '20181019080910'); |
| 106 | +echo $dateTime->format('Y-m-d H:i:s') . PHP_EOL; |
| 107 | +/** |
| 108 | + * Output: 2018-10-19 08:09:10 |
| 109 | + */ |
| 110 | +``` |
| 111 | + |
| 112 | +### Format a DateTime object as SAP timestamp |
| 113 | + |
| 114 | +```php |
| 115 | +<?php |
| 116 | +use phpsap\DateTime\SapDateTime; |
| 117 | +$dateTime = new SapDateTime('2018-12-31 09:10:11'); |
| 118 | +echo $dateTime->format(SapDateTime::SAP_TIMESTAMP) . PHP_EOL; |
| 119 | +/** |
| 120 | + * Output: 20181231091011 |
| 121 | + */ |
| 122 | +``` |
| 123 | + |
| 124 | +[phpdatetime]: http://php.net/manual/en/class.datetime.php "PHP: DateTime - Manual" |
| 125 | +[sapdatetime]: https://github.com/php-sap/datetime "PHP/SAP DateTime repository on GitHub" |
0 commit comments