westonwatson / datescan
识别和解析多种日期/时间格式。
1.0.3
2019-06-20 19:41 UTC
Requires (Dev)
- phpunit/phpunit: 5.7.27
This package is auto-updated.
Last update: 2024-09-21 21:16:55 UTC
README
识别和解析多种日期/时间格式。
我们需要一个简单的工具来帮助我们解析来自众多来源的多种日期格式,以便整合到我们的中心线索处理平台。Datescan就是我们识别和解析多种不同格式的一种简单、一致、可靠的工具。
我们很高兴将Datescan公之于众,并希望更多开发者加入进来,为项目做出贡献。
示例用法
基本用法
<?php
namespace ExampleNamespace\ExampleCode;
use westonwatson\Datescan\Datescan;
/**
* Class ExampleClass
*
* @package ExampleNamespace\ExampleCode
*/
class ExampleClass
{
/**
* @param string $date
*
* @return string
* @throws \Exception
*/
public function exampleFunction(string $date = '10/12/19'): string
{
//input date as string
$datescan = new Datescan($date);
//get DateTime object
$dateTimeObject = $datescan->getRealDateTime();
//return date string as another format
return $dateTimeObject->format('d/m/Y');
}
}
自定义模式格式
当处理多种日期时间格式时,您可能会遇到非标准格式。这些格式可能不在Datescan的默认模式列表中。使用
addFormatPattern
方法允许您包含自定义的正则表达式模式和相关的DateTime格式字符串。以下是一个使用此方法包含您自己的模式和格式的示例。
<?php
namespace ExampleNamespace\ExampleCustomPattern;
use westonwatson\Datescan\Datescan;
/**
* Class ExampleCustomPatternClass
*
* @package ExampleNamespace
*/
class ExampleCustomPatternClass
{
/**
* @param string $date
*
* @return string
*/
public function exampleCustomPatternFunction(string $date = '10--12--2019'): string
{
//input date as string
$datescan = new Datescan($date);
//add custom format and pattern
$datescan->addFormatPattern('d--m--Y', '/^(0[1-9]|[1-2][0-9]|3[0-1])--(0[1-9]|1[0-2])--[0-9]{4}$/');
//return DateTime object
return $datescan->getRealDateTime();
}
}
自定义最近日期
Datescan使用一个简单的日期差分算法,当存在多个模式匹配时返回单个日期/时间。它使用当前日期时间(现在)进行比较。因此,如果有多个正则表达式模式匹配,将选择最接近今天的日期并返回。您可以更改这个'最近日期'进行比较,这在使用可能匹配多种格式的复杂模式时提供了更大的灵活性。
<?php
namespace ExampleNamespace\ExampleClosestDateCode;
use westonwatson\Datescan\Datescan;
/**
* Class ExampleClosestDateClass
*
* @package ExampleNamespace
*/
class ExampleClosestDateClass
{
/**
* @param string $date
*
* @return string
*/
public function exampleClosestDateFunction(string $date = '10/12/12'): string
{
//input date as string
$datescan = new Datescan($date);
//set custom closestDate
$datescan->setClosestDate(new DateTime('2009-01-01'));
//get DateTime object
$dateTimeObject = $datescan->getRealDateTime();
//return date string as another format
return $dateTimeObject->format('d/m/Y');
}
}
在上面的部分中,我们处理的是一个可能匹配多种模式的日期字符串。在这种情况下,我们知道日期是y/m/d而不是d/m/y。设置一个过去的最接近日期(2009年)允许Datescan匹配正确的模式/格式。2010年12月12日。
贡献
请随时提交拉取请求或在GitHub上打开一个问题。任何和所有的帮助都将非常感激。如果您愿意,可以将您的姓名和/或联系方式添加到以下贡献者列表中。
--感谢 👍
贡献者
- Weston Watson