[英]Convert database time and date into user local time using php in laravel
[英]Convert Stored Sever Time into LOCAL time using PHP or JS
我有 wordpress 网站,我正在创建有时间的事件。 我可以在我的 php function 文件中使用以下内容访问它。
$start_date = DateTime::createFromFormat( AGENDA_SESSION_DATE_RETURN_FORMAT, $session['start_date'] );
$start_date = strtoupper( $start_date->format( 'g:i a' ) );
$end_date = DateTime::createFromFormat( AGENDA_SESSION_DATE_RETURN_FORMAT, $session['end_date'] );
$end_date = strtoupper( $end_date->format( 'g:i a' ) );
它使用服务器时间,我想将其转换为访客本地时间 + PST 时间。
我不想使用访客的 IP 地址。
相反,我想使用访问者的操作系统时间,可以使用 JavaScript 访问。
我可以将PHP 日期传递给 JavaScript 。 有没有办法做到这一点?
要求:显示用户时区而不是服务器时区的时间。 任何人都可以帮我解决这个问题?? 谢谢
尝试以下步骤
步骤 1:将 PHP 服务器日期时间戳添加到模板的 html 数据字段。
<span class="soap_time_custom"
data-starttime="<?php echo strtotime(get_field( 'start_date_time', $post_id )); ?>"
data-endtime="<?php echo strtotime(get_field( 'end_date_time', $post_id )); ?>" ></span>
第 2 步:计算您的服务器时间与访问者本地时间的差异。 下面的代码示例。
第 3 步:对于时区,请从此处使用 moment.js。
$(document).ready(function() {
var timedelay = setTimeout(function(){
if($(".soap_time_custom").length>0)
{
$(".soap_time_custom").each(function(index, element) {
var starttime = $(this).data("starttime"); // 2020-10-18 18:00:00 / 1603044000
var endtime = $(this).data("endtime"); // 2020-10-18 18:10:00
if(starttime !== "" && endtime != ""){
var d = new Date();
var n = d.getTimezoneOffset();
var ClientSide_starttime = new Date((parseFloat(starttime)+n+350)*1000);
var ClientSide_endtime = new Date((parseFloat(endtime)+n+350)*1000);
//var local_time_zone = (new Date()).toTimeString().match(new RegExp("[A-Z](?!.*[\(])","g")).join('');
var local_time_zone = moment.tz(Intl.DateTimeFormat().resolvedOptions().timeZone).zoneAbbr();
var new_local_time = formatAMPM(ClientSide_starttime)+" / "+formatAMPM(ClientSide_endtime)+" "+local_time_zone.toUpperCase();
$(this).html(new_local_time+" — ");
}
});
}
}, 2500,'');
function formatAMPM(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0'+minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
return strTime;
}
});
注意:对于时区,您必须使用 2 个文件momentjs 和时区扩展名,如上面的屏幕截图所示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.