- 我想知道strtotime (php 日期函数)是如何工作的?
- 如何将“ 2012 年 9 月 15 日”之类的字符串解析为时间戳
- 有没有更好的算法?
我的目的是改变波斯语的这个功能
您可以浏览 PHP 的源代码(https://github.com/php/php-src)并搜索功能以查看其实现。
更新
这里是函数strtotime()的算法https://github.com/php/php-src/blob/master/ext/date/php_date.c#L1324
问候!。
由于strtotime接受英文输入,我建议采用波斯输入:“15 (SOMETHING_PERSIAN) 2012”并替换所需的字符串(我猜你需要一些 RegExp 和 switch 语句)并将其设为“15 (SOMETHING_ENGLISH) 2012”然后将其发送到strtotime
我想知道 strtotime(php 日期函数)是如何工作的?
去这里:https ://github.com/php/php-src/blob/master/ext/date/lib/parse_date.c
搜索timelib_strtotime
。
忘了它,使用 php Intl 扩展。将来将成为 php 核心的一部分。
<?php
// format
$format = datefmt_create('fa_IR@calendar=persian', IntlDateFormatter::FULL, IntlDateFormatter::FULL, 'Asia/Tehran', IntlDateFormatter::TRADITIONAL, 'yyyy/MM/dd HH:mm');
// time in locale as you wish
var_dump(datefmt_format($format, time())); // '۱۳۹۱/۰۲/۰۴ ۱۹:۱۵'
如果您想在 i18n 中支持所有语言的波斯语,请支持 ICU 项目。
实际解析字符串的方法在parse_date.re 的scan()
方法中。在那里,您将找到所有strtotime
关键字及其行为。