在 WordPress 和 WooCommerce 中將公曆日期轉換為太陽日期
P粉662361740
P粉662361740 2023-09-03 16:27:14
0
1
635
<p>我為我的網站設計了一個模板,我希望模板中的所有 <strong>WordPress</strong> 和 <strong>WooCommerce</strong> 日期從公曆轉換為陽曆。 </p> <p>我使用以下<strong>短代碼</strong>來顯示我的帖子的發布日期:</p> <pre class="brush:php;toolbar:false;"><?php the_time('Y/m/d'); ?></pre> <p>但它顯示的日期是公曆,我希望將其更改為 Shamsi。 </p> <p>我知道有很多插件可以實現這一點,但我想在我的模板中添加一些程式碼,以便我的預設模板永遠成為太陽日期。 </p> <p>我需要任何可以幫助我使用此功能的幫助。 </p> <p>非常感謝。 </p> <hr /> <p><strong>編:</strong></p> <p>我之前嘗試過所有這些程式碼,但它們都沒有為我更改 WordPress 的日期。 </p> <p><strong>我正在尋找一個代碼,通過將其放入<strong><code>functions.php</code></strong> 文件中,將轉換所有WordPress 日期或至少顯示的日期在我的太陽能模板中。 </strong></p> <p>HijriCalendar.class.php</p> <p>波斯日曆</p> <hr /> <p><strong>編2:</strong></p> <p>我在範本中使用了 moment.js 函式庫,也使用了 <strong>javascript</strong> 方法,但仍然不起作用。 </p> <p>如何在 JavaScript 中將公曆日期改為波斯日期? </p> <p>將公曆日期轉換為 Angular 2 和 Ionic 2 中的波斯(Jalali)日期</p>
P粉662361740
P粉662361740

全部回覆(1)
P粉752812853

我認為首先您使用 get_the_time 函數來獲取日期,然後將其轉換為 shamsi 日期並回顯它以顯示。 像下面這樣的程式碼工作。您可以新增任何您想要的其他 g2p 功能。

add_filter('the_time', 'change_date_format');

function change_date_format(){
    //change date language here
    $date = get_the_time('Y/m/d');
    $date = explode('/', $date);
    $farsi_date = g2p($date[0],$date[1],$date[2]);
    return $farsi_date[0].'/'.$farsi_date[1].'/'.$farsi_date[2];
}

function g2p($g_y, $g_m, $g_d)
{
    $g_days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    $j_days_in_month = array(31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29);

    $gy = $g_y-1600;
    $gm = $g_m-1;
    $gd = $g_d-1;

    $g_day_no = 365*$gy+floor(($gy+3)/4)-floor(($gy+99)/100)+floor(($gy+399)/400);

    for ($i=0; $i < $gm; ++$i){
        $g_day_no += $g_days_in_month[$i];
    }

    if ($gm>1 && (($gy%4==0 && $gy%100!=0) || ($gy%400==0))){
        /* leap and after Feb */
        ++$g_day_no;
    }

    $g_day_no += $gd;
    $j_day_no = $g_day_no-79;
    $j_np = floor($j_day_no/12053);
    $j_day_no %= 12053;
    $jy = 979+33*$j_np+4*floor($j_day_no/1461);
    $j_day_no %= 1461;

    if ($j_day_no >= 366) {
        $jy += floor(($j_day_no-1)/365);
        $j_day_no = ($j_day_no-1)%365;
    }
    $j_all_days = $j_day_no+1;

    for ($i = 0; $i < 11 && $j_day_no >= $j_days_in_month[$i]; ++$i) {
        $j_day_no -= $j_days_in_month[$i];
    }

    $jm = $i+1;
    $jd = $j_day_no+1;

    return array($jy, $jm, $jd, $j_all_days);
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!