Skip to content

Commit 21fb037

Browse files
committed
add SapDateTime documentation
1 parent 74b37fc commit 21fb037

File tree

3 files changed

+127
-1
lines changed

3 files changed

+127
-1
lines changed

abstract-rfc.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ The class `ZGetWeek` contains only code, that configures the API of your SAP
99
* `getName()` returns the SAP remote function name.
1010
* `setDate()` sets the SAP remote function parameter.
1111
* `invoke()` casts the result of the SAP remote function call to a
12-
DateTime object.
12+
[DateTime](datetime) object.
1313

1414
```php
1515
<?php

datetime.md

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
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"

index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,4 @@ $result = (new SapRfcConnection(new SapRfcConfigA([
5151
- [Establish a connection](saprfc-connection)
5252
- [Invoke a function call](saprfc-function)
5353
* [Extend `AbstractRemoteFunctionCall`](abstract-rfc)
54+
* [DateTime conversions for SAP](datetime)

0 commit comments

Comments
 (0)