在 WordPress 和 WooCommerce 中将公历日期转换为太阳日期
                
                    
                          
                        
                            
                                P粉662361740
                                2023-09-03 16:27:14
                            
                                                        [PHP讨论组]
                                                     
                     
                    
                 
             
            
            
                <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>            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
            
         
        
        
     
我认为首先您使用 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); }