簡體   English   中英

將日期轉換為當前月份的日期

[英]Convert date to current month date

我需要將任何日期轉換為從今天起1個月內的日期。 日期小於今天的日期應轉換為下個月。

例如,當前日期為2018-09-11,日期為:

$dates = ['2018-08-01', '2018-09-11', '2018-09-15', '2018-10-15', '2018-12-31', '2019-01-01', '2019-01-31'];

結果分別如下:

$result = ['2018-10-01', '2018-09-11', '2018-09-15', '2018-09-15', '2018-09-30', '2018-10-01, '2018-09-30'];

編輯:到目前為止,我已經嘗試過使用strtotime('+ 1 month'),但是它在諸如2018-10-31之類的日期上失敗了,因為它將給出2018-12-01。 它也無法在諸如2018-10-31之類的日期上使用strtotime('-1 month')給出2018-10-01而不是2018-09-30。

我目前的解決方案如下,但我相信可以通過某種方式更簡單地完成:

$timestamp = strtotime('2018-10-31');
if (date('d', $timestamp) > date('t')) {
    $date = date('Y-m-t');
} elseif(date('d', $timestamp) < date('d')) {
    $year = date('Y');
    $month = date('m') == 12 ? 1 : (intval(date('n')) + 1);
    if ($month < 10) {
        $month = '0'.$month;
    }
    $day = date('d', $timestamp);
    $date = $year . '-' . $month . '-' . $day;
} else {
    $date = date('Y-m') . '-' . date('d', $timestamp);
}

您可以使用

if('2018-09-11'<date("Y-m-d"))
date("Y-m-d", strtotime("+1 month", '2018-09-11'));

例如

暫無
暫無

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

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