Добавление LE_TIME
This commit is contained in:
80
CLASSES/core/LE_TIME.php
Normal file
80
CLASSES/core/LE_TIME.php
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Author: Pavel Belyaev
|
||||||
|
* GitHub: https://github.com/TechResearchRu/LE_DRAFT
|
||||||
|
* Email: pavelbbb@gmail.com
|
||||||
|
* LE FRAMEWORK, LE_TIME v0.1 2021, read strftime php doc
|
||||||
|
*/
|
||||||
|
|
||||||
|
class LE_TIME
|
||||||
|
{
|
||||||
|
public static $TZ=5; //локальный часовой пояс, можно меняться для пользователя, используется при отображении данных
|
||||||
|
|
||||||
|
public static function NUM2FORMAT($num)
|
||||||
|
{
|
||||||
|
$num-=1;
|
||||||
|
$arr = ['%Y-%m-%d %H:%M:%S','%Y-%m-%d','%d %b %Y - %T','%d %b %Y %T','%d.%m.%Y - %T','%d.%m.%Y %T','%d.%m.%Y','%d %b %Y'];
|
||||||
|
|
||||||
|
if (isset($arr[$num])) return $arr[$num];
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function TS2STR($f=false,$ts=false,$tz=false)
|
||||||
|
{
|
||||||
|
if ($f!==false && is_numeric($f))
|
||||||
|
$f = LE_TIME::NUM2FORMAT($f);
|
||||||
|
|
||||||
|
|
||||||
|
$f = ($f===false)?'%d %b %Y - %T':$f; //format
|
||||||
|
|
||||||
|
$tz = ($tz===false) ? LE_TIME::$TZ : $tz; //time zone
|
||||||
|
$ts = ($ts===false) ? time() : $ts; //timestamp
|
||||||
|
|
||||||
|
$ts+= 3600*$tz; //correct timezone
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return gmstrftime ($f,$ts);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function STR2TS($str)
|
||||||
|
{
|
||||||
|
return strtotime ($str);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function STR2STR($str,$f=false,$tz=0)
|
||||||
|
{
|
||||||
|
$ts = LE_TIME::STR2TS($str);
|
||||||
|
return LE_TIME::TS2STR($f,$ts,$tz);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function STR2ARR($str)
|
||||||
|
{
|
||||||
|
$ts = LE_TIME::STR2TS($str);
|
||||||
|
return LE_TIME::TS2ARR($ts);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function TS2ARR($ts=false)
|
||||||
|
{
|
||||||
|
$res = LE_TIME::TS2STR('%Y:%m:%d:%H:%M:%S',$ts,0);
|
||||||
|
$res = explode(':',$res);
|
||||||
|
return [
|
||||||
|
'Y'=>$res[0],'M'=>$res[1],'D'=>$res[2],
|
||||||
|
'HOUR'=>$res[3],'MIN'=>$res[4],'SEC'=>$res[5]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function ARR2TS($arr)
|
||||||
|
{
|
||||||
|
$str = $arr['Y']."-".$arr['M']."-".$arr['D'];
|
||||||
|
$str .= " ".$arr['HOUR'].":".$arr['MIN'].":".$arr['SEC'];
|
||||||
|
return LE_TIME::STR2TS($str);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function ARR2STR($arr,$f=false,$tz=0)
|
||||||
|
{
|
||||||
|
$ts = LE_TIME::ARR2TS($arr);
|
||||||
|
return LE_TIME::TS2STR($f,$ts,$tz);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
[< Documentation](../)
|
||||||
# LE_CURL
|
# LE_CURL
|
||||||
© by Pavel Belyaev, LE Framework, Tech-Research.ru
|
© by Pavel Belyaev, LE Framework, Tech-Research.ru
|
||||||
|
|
||||||
|
|||||||
80
DOC/core_classes/LE_TIME.md
Normal file
80
DOC/core_classes/LE_TIME.md
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
[< Documentation](../)
|
||||||
|
# LE_TIME
|
||||||
|
© by Pavel Belyaev, LE Framework, Tech-Research.ru
|
||||||
|
|
||||||
|
## About
|
||||||
|
Данный класс создан для упрощения работы с датами и временем...
|
||||||
|
|
||||||
|
### Форматирование даты
|
||||||
|
> Данная функция принимает на вход timestamp, а возвращает строку с датой и временем в нужном формате
|
||||||
|
|
||||||
|
```php
|
||||||
|
echo LE_TIME::TS2STR($format=false,$timestamp=false,$timezone=false);
|
||||||
|
```
|
||||||
|
* `$format` - формат strftime, по умолчанию `30 дек 2020 02:54:00`
|
||||||
|
* `$timestamp` - по умолчанию текущее время, передавать timestamp в unixtime (секундах)
|
||||||
|
* `$timezone` - по умолчанию UTC +5 (Yekaterinburg), если передать 0, то будет по Гринвичу
|
||||||
|
|
||||||
|
#### Примеры форматов
|
||||||
|
>Дата: 23 января 2020 года 23 часа, 34 минуты, 20 секунд
|
||||||
|
|
||||||
|
ID | Формат | Выхлоп | Применение
|
||||||
|
----|------------- | ------------- | ---
|
||||||
|
1 | %Y-%m-%d %H:%M:%S | 2020-01-23 23:34:20 | Запись в БД DateTime
|
||||||
|
2 | %Y-%m-%d | 2020-01-23 | Запись в бд Date
|
||||||
|
3 | %d %b %Y - %T | 23 янв 2020 - 23:34:20 | Вывод в интерфейсе
|
||||||
|
4 | %d %b %Y %T | 23 янв 2020 23:34:20 | Вывод в интерфейсе
|
||||||
|
5 | %d.%m.%Y - %T | 23.01.2020 - 23:34:20 | Вывод в интерфейсе
|
||||||
|
6 | %d.%m.%Y %T | 23.01.2020 23:34:20 | Вывод в интерфейсе
|
||||||
|
7 | %d.%m.%Y | 23.01.2020 | Вывод в интерфейсе
|
||||||
|
8 | %d %b %Y | 23 янв 2020
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Формат можно писать свой в формате strftime или просто передать номер из таблицы
|
||||||
|
|
||||||
|
```php
|
||||||
|
echo LE_TIME::TS2STR($format=8,$timestamp=false,$timezone=0);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Преобразующие функции
|
||||||
|
#### Из одной строки в другую
|
||||||
|
```php
|
||||||
|
$str2 = LE_TIME::STR2STR($str="2020-01-23",$format=8,$tz=0);
|
||||||
|
```
|
||||||
|
удобно применять для переформатирования даты из БД в дату в нужном формате, на вход можно подавать дату в UTC, а на выходе в локальном часовом поясе, для этого можно передать `$tz=5`
|
||||||
|
|
||||||
|
#### Из строки в Timestamp
|
||||||
|
> простой парсинг строки с датой, возвращает timestamp
|
||||||
|
```php
|
||||||
|
$str2 = LE_TIME::STR2TS($str="20.05.2020");
|
||||||
|
```
|
||||||
|
|
||||||
|
> Преобразование в массив и из массива удобно для специфичных операций с датами,
|
||||||
|
> например, быстро подправить время на `00:00:00` или `23:59:59` или быстро сдвинуть год, поправить дату
|
||||||
|
|
||||||
|
#### Из строки в массив
|
||||||
|
|
||||||
|
```php
|
||||||
|
$time_arr = LE_TIME::STR2ARR($str="20.05.2020");
|
||||||
|
```
|
||||||
|
* `Y` - год
|
||||||
|
* `M` - месяц
|
||||||
|
* `D` - день месяца
|
||||||
|
* `HOUR` - час в 24 формате
|
||||||
|
* `MIN` - минуты
|
||||||
|
* `MIN` - секунды
|
||||||
|
|
||||||
|
#### Из Timestamp в массив
|
||||||
|
```php
|
||||||
|
$time_arr = LE_TIME::TS2ARR($ts=false);
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Из массива в TimeStamp
|
||||||
|
```php
|
||||||
|
$timestamp = LE_TIME::ARR2TS($time_arr);
|
||||||
|
```
|
||||||
|
#### Из массива в строку (с форматирование и смещением на часовой пояс)
|
||||||
|
```php
|
||||||
|
$time_arr = LE_TIME::ARR2STR($time_arr,$f=8,$tz=0)
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user