将月份名称转换为不同语言的数字?
Convert Month Name into Number With Different Languages?
我想将月份名称转换为不同语言的数字格式。我写了一段代码,代码在我的本地主机上工作,但它在实时服务器上不工作,它返回 false 值。而且几个月来它的工作和它不工作 Dezembro , outubro 它不工作。我该如何解决这个问题?你能帮我解决这个问题吗??
$visit_date = "7 Dezembro, 2019";
$split_date = explode(" ", $visit_date);
$visit_day = sprintf("%02d", $split_date[0]);
$visit_month = $split_date[1];
if (substr($visit_month, -1) == ',')
{
$visit_month = substr($visit_month, 0, -1);
$visit_year = $split_date[2];
}
else {
$visit_year = $split_date[3];
}
var_dump($visit_month);
$visit_month = month_to_number($visit_month, 'pt_PT');
var_dump($visit_month);
// convert visit date month full name to month number for all languages
function month_to_number($month, $locale_set= 'pt_PT' )
{
$month = mb_convert_case($month, MB_CASE_LOWER, 'UTF-8');
$locale =
setlocale(LC_TIME, '0');
setlocale(LC_TIME, $locale_set.'.UTF-8');
$month_number = FALSE;
for ($i = 1; $i <= 12; $i++)
{
$time_month = mktime(0, 0, 0, $i, 1, 1970);
$short_month = date('M', $time_month);
$short_month_lc = strftime('%b', $time_month);
if (stripos($month, $short_month) === 0 OR
stripos($month, $short_month_lc) === 0)
{
$month_number = sprintf("%02d", $i);
break;
}
}
setlocale(LC_TIME, $locale); // return locale back
return $month_number;
}
如果可以集成外部 class dt 试试这个:
$visit_date = "7 Dezembro, 2019";
dt::setDefaultLanguage('pt');
$dt = dt::create($visit_date);
echo $dt->format('Y-m-d');//2019-12-07
在内部,class 在设置语言时为每个月创建一个翻译 table。 IntlDateFormatter class 用于此。
注意:IntlDateFormatter class 独立于服务器的本地设置工作。
我想将月份名称转换为不同语言的数字格式。我写了一段代码,代码在我的本地主机上工作,但它在实时服务器上不工作,它返回 false 值。而且几个月来它的工作和它不工作 Dezembro , outubro 它不工作。我该如何解决这个问题?你能帮我解决这个问题吗??
$visit_date = "7 Dezembro, 2019";
$split_date = explode(" ", $visit_date);
$visit_day = sprintf("%02d", $split_date[0]);
$visit_month = $split_date[1];
if (substr($visit_month, -1) == ',')
{
$visit_month = substr($visit_month, 0, -1);
$visit_year = $split_date[2];
}
else {
$visit_year = $split_date[3];
}
var_dump($visit_month);
$visit_month = month_to_number($visit_month, 'pt_PT');
var_dump($visit_month);
// convert visit date month full name to month number for all languages
function month_to_number($month, $locale_set= 'pt_PT' )
{
$month = mb_convert_case($month, MB_CASE_LOWER, 'UTF-8');
$locale =
setlocale(LC_TIME, '0');
setlocale(LC_TIME, $locale_set.'.UTF-8');
$month_number = FALSE;
for ($i = 1; $i <= 12; $i++)
{
$time_month = mktime(0, 0, 0, $i, 1, 1970);
$short_month = date('M', $time_month);
$short_month_lc = strftime('%b', $time_month);
if (stripos($month, $short_month) === 0 OR
stripos($month, $short_month_lc) === 0)
{
$month_number = sprintf("%02d", $i);
break;
}
}
setlocale(LC_TIME, $locale); // return locale back
return $month_number;
}
如果可以集成外部 class dt 试试这个:
$visit_date = "7 Dezembro, 2019";
dt::setDefaultLanguage('pt');
$dt = dt::create($visit_date);
echo $dt->format('Y-m-d');//2019-12-07
在内部,class 在设置语言时为每个月创建一个翻译 table。 IntlDateFormatter class 用于此。
注意:IntlDateFormatter class 独立于服务器的本地设置工作。