我有这个PHP代码:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
Run Code Online (Sandbox Code Playgroud)
但它正在回归December而不是August.
$result["month"]等于8,所以sprintf函数是添加一个0来制作它08.
Ama*_*ali 333
建议的方法是:
如今,您应该将DateTime对象用于任何日期/时间数学.这要求您拥有> = 5.2的PHP版本.如Glavić的回答所示,您可以使用以下内容:
$monthNum = 3;
$dateObj = DateTime::createFromFormat('!m', $monthNum);
$monthName = $dateObj->format('F'); // March
Run Code Online (Sandbox Code Playgroud)
该!格式化字符用于重置一切的Unix纪元.该m格式字符是一月份的数字表示,用前导零.
替代方案:
如果您使用的是较旧的PHP版本且目前无法升级,则可以使用此解决方案.date()函数的第二个参数接受一个时间戳,你可以mktime()用来创建一个,如下所示:
$monthNum = 3;
$monthName = date('F', mktime(0, 0, 0, $monthNum, 10)); // March
Run Code Online (Sandbox Code Playgroud)
如果您想要3个字母的月份名称Mar,请更改F为M.可以在PHP手册文档中找到所有可用格式选项的列表.
Gla*_*vić 41
只是因为每个人都在使用strtotime()和date()函数,我将显示DateTime示例:
$dt = DateTime::createFromFormat('!m', $result['month']);
echo $dt->format('F');
Run Code Online (Sandbox Code Playgroud)
min*_*sky 28
用途mktime():
<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; // Output: May
?>
Run Code Online (Sandbox Code Playgroud)
请参阅PHP手册:http://php.net/mktime
Gre*_*reg 18
strtotime 期望标准日期格式,并传回时间戳.
您似乎传递strtotime一个数字来输出日期格式.
您应该使用mktime将日期元素作为参数.
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", mktime(null, null, null, $monthNum));
echo $monthName;
Run Code Online (Sandbox Code Playgroud)
但是,mktime函数不需要前导零到月份数,因此第一行完全没必要,并且$result["month"]可以直接传递给函数.
然后可以将它们组合成一行,以内联方式回显日期.
echo date("F", mktime(null, null, null, $result["month"], 1));
Run Code Online (Sandbox Code Playgroud)
...
Der*_*son 17
要对当前语言环境进行转换,可以使用以下strftime函数:
setlocale(LC_TIME, 'fr_FR.UTF-8');
$monthName = strftime('%B', mktime(0, 0, 0, $monthNumber));
Run Code Online (Sandbox Code Playgroud)
date不尊重语言环境strftime.
有很多方法可以从给定的数字中打印一个月。为您挑选一间套房。
1. date() 函数以及参数 'F'
代码示例:
$month_num = 10;
echo date("F", mktime(0, 0, 0, $month_num, 10)); //output: October
Run Code Online (Sandbox Code Playgroud)
2. 通过使用 createFromFormat() 创建 php 日期对象
代码示例
$dateObj = DateTime::createFromFormat('!m', $monthNum);
echo "month name: ".$dateObj->format('F'); // Output: October
Run Code Online (Sandbox Code Playgroud)
3. strtotime() 函数
echo date("F", strtotime('00-'.$monthNum.'-01')); // Output: October
Run Code Online (Sandbox Code Playgroud)
4. mktime() 函数
echo date("F", mktime(null, null, null, $monthNum)); // Output: October
Run Code Online (Sandbox Code Playgroud)
5. 通过使用 jdmonthname()
$jd=gregoriantojd($monthNum,10,2019);
echo jdmonthname($jd,0); // Output: Oct
Run Code Online (Sandbox Code Playgroud)
如果您只想从年初到年底使用一个月名称数组,例如填充一个下拉选择,我将使用以下内容;
for ($i = 0; $i < 12; ++$i) {
$months[$m] = $m = date("F", strtotime("January +$i months"));
}
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您有月份编号,则可以首先从中创建一个默认日期为 1st 和当前年份的默认年份的日期,然后从创建的日期中提取月份名称:
echo date("F", strtotime(date("Y") ."-". $i ."-01"))
Run Code Online (Sandbox Code Playgroud)
此代码假设您将月份编号存储在 $i 中
根据需要适应
$m='08';
$months = array (1=>'Jan',2=>'Feb',3=>'Mar',4=>'Apr',5=>'May',6=>'Jun',7=>'Jul',8=>'Aug',9=>'Sep',10=>'Oct',11=>'Nov',12=>'Dec');
echo $months[(int)$m];
Run Code Online (Sandbox Code Playgroud)
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
Run Code Online (Sandbox Code Playgroud)
我在https://css-tricks.com/snippets/php/change-month-number-to-month-name/上找到了这个,它运行良好。
| 归档时间: |
|
| 查看次数: |
295523 次 |
| 最近记录: |