簡體   English   中英

將月份從名稱轉換為數字

[英]convert month from name to number

有沒有一種簡單的方法來改變$month = "July"; 這樣$nmonth = 707也可以)。 我可以做一個 case 語句,但肯定已經有一個函數可以轉換? 編輯:我希望我能接受多個答案,因為你們兩個基本上通過你們的力量給了我我需要的東西。

$nmonth = date('m',strtotime($month));

這將給出$month的數值。 謝謝!

嘗試這個:

<?php
  $date = date_parse('July');
  var_dump($date['month']);
?>

是的,

$date = 'July 25 2010';
echo date('d/m/Y', strtotime($date));

m將月份格式化為其數字表示形式。

一個有趣的樣子,kelly 給出的代碼運行良好,

$nmonth = date("m", strtotime($month));

但是對於二月,當閏年的當前日期為 30 或 31 以及非閏年的 29,30,31 時,它不會按預期工作。它將返回3作為月份數。 前任:

$nmonth = date("m", strtotime("february"));

解決方案是,將年份與月份相加,如下所示:

$nmonth = date("m", strtotime("february-2012"));

我從 php 手冊中的這個評論中得到了這個。

$string = "July";
echo $month_number = date("n",strtotime($string));

返回 '​​7' [月數]

使用date("m",strtotime($string)); 對於輸出“08”

更多格式請參考這里..
http://php.net/manual/en/function.date.php

你也可以使用這個:

$month = $monthname = date("M", strtotime($month));
$nmonth = date("m", strtotime($month));
$monthname = date("F", strtotime($month));

F表示完整的月份名稱

<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; //output: May
?>

樓上的回答不錯。 這是另一種方法:-

function getMonthNumber($monthStr) {
//e.g, $month='Jan' or 'January' or 'JAN' or 'JANUARY' or 'january' or 'jan'
$m = ucfirst(strtolower(trim($monthStr)));
switch ($m) {
    case "January":        
    case "Jan":
        $m = "01";
        break;
    case "February":
    case "Feb":
        $m = "02";
        break;
    case "March":
    case "Mar":
        $m = "03";
        break;
    case "April":
    case "Apr":
        $m = "04";
        break;
    case "May":
        $m = "05";
        break;
    case "June":
    case "Jun":
        $m = "06";
        break;
    case "July":        
    case "Jul":
        $m = "07";
        break;
    case "August":
    case "Aug":
        $m = "08";
        break;
    case "September":
    case "Sep":
        $m = "09";
        break;
    case "October":
    case "Oct":
        $m = "10";
        break;
    case "November":
    case "Nov":
        $m = "11";
        break;
    case "December":
    case "Dec":
        $m = "12";
        break;
    default:
        $m = false;
        break;
}
return $m;
}

創建假日期可能是最簡單的方法,因此您可以使用 date 函數。

這里的優秀參考: http : //php.net/manual/en/function.date.php

例子:

<?
$month = 7;

$tempDate = mktime(0, 0, 0, $month, 1, 1900); 

echo date("m",$tempDate);


?>

如果您想要字符串名稱中的月份數,則

$month = 'August';
$year = 2019;
echo date('m',strtotime($month.' '.$year));

給 08

或者如果你想要月份的全名,那么

echo date('F')

或者,如果你想要月份的半名,那么

echo date('M')

date("F", mktime(0, 0, 0, ($month)));

where, $month value will be 1 -> 12
$date = 'Dec 25 2099';
echo date('d/m/Y', strtotime($date));

這將返回01/01/1970 ,這意味着 php 不支持所有日期,它返回格式正確的日期直到Jan 19 2038Jan 19 2038Jan 20 2038 01/01/1970 Jan 20 2038返回01/01/1970

也許結合使用strtotime()date()

$dt = '2017-Jan-10';
         OR
$dt = '2017-January-10';

echo date('Ym-d', strtotime($dt));

echo date('Y/m/d', strtotime($dt));

使用 PHP 5.4,您可以將 Matthew 的答案變成單行式:

$date = sprintf('%d-%d-01', $year, date_parse('may')['month']);

我知道這似乎是一個簡單的解決方案,但為什么不使用這樣的方法

<select name="month">
  <option value="01">January</option>
  <option value="02">February</option>
  <option selected value="03">March</option>
</select>

用戶看到二月,但是02被張貼到數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM