使用 Javascript 将 mysql UTC_TIMESTAMP 转换为 CST 和 MST
Converting a mysql UTC_TIMESTAMP to CST and MST using Javascript
我进行了无休止的搜索,但找不到适合我的解决方案。我将记录存储在 mysql 数据库中,该数据库记录了它创建时的 UTC 时间 (UTC_TIMESTAMP())。我需要在用户当地时间向用户显示数据(使用 JavaScript)。我尝试了以下方法,但没有用:
JavaScript:
function localizeDateStr(dateToConvert,divId){
newDate = new Date(dateToConvert);
document.getElementById(divId).innerHTML = newDate.toString();
}
HTML:
<div id="<?php echo $divId ?>" class="td-short"></div>
<script type="text/javascript">window.onload = localizeDateStr('<?php echo $entryTime;?>','<?php echo $divId;?>');</script>
数据库中存储的 UTC 日期与正在使用的日期相同 displayed.I 我没有看到转换后的日期。任何帮助,将不胜感激。请指教
通过Date
构造函数(或通过Date.parse
)解析字符串对输入字符串的格式非常敏感。根据您在评论 '2019-03-20 17:43:53'
中给出的值, 大多数 实现将根据 当地时间 来解释它。但是,the specification 并不要求符合这一点,因为它只描述了一种非常特殊的格式。其他任何内容都取决于实现。
假设您的字符串始终采用这种格式,并且您希望将其解释为 UTC,您的选择是:
调整字符串以在日期和时间部分之间包含一个 T
分隔符,并以 Z
结尾以指示 UTC。
var newDate = new Date(dateToConvert.replace(' ','T') + 'Z');
自己解析字符串:
var parts = dateToConvert.split(/[-: ]/g).map((x) => parseInt(x));
parts[1]--; // Months are 0-11, so adjust
var newDate = new Date(Date.UTC(...parts));
使用类似Luxon的库:
var dt = luxon.DateTime.fromFormat(dateToConvert,
'yyyy-MM-dd HH:mm:ss', { zone: 'UTC' });
var newDate = dt.toJSDate();
或Moment:
var newDate = moment.utc(dateToConvert).toDate();
我进行了无休止的搜索,但找不到适合我的解决方案。我将记录存储在 mysql 数据库中,该数据库记录了它创建时的 UTC 时间 (UTC_TIMESTAMP())。我需要在用户当地时间向用户显示数据(使用 JavaScript)。我尝试了以下方法,但没有用:
JavaScript:
function localizeDateStr(dateToConvert,divId){
newDate = new Date(dateToConvert);
document.getElementById(divId).innerHTML = newDate.toString();
}
HTML:
<div id="<?php echo $divId ?>" class="td-short"></div>
<script type="text/javascript">window.onload = localizeDateStr('<?php echo $entryTime;?>','<?php echo $divId;?>');</script>
数据库中存储的 UTC 日期与正在使用的日期相同 displayed.I 我没有看到转换后的日期。任何帮助,将不胜感激。请指教
通过Date
构造函数(或通过Date.parse
)解析字符串对输入字符串的格式非常敏感。根据您在评论 '2019-03-20 17:43:53'
中给出的值, 大多数 实现将根据 当地时间 来解释它。但是,the specification 并不要求符合这一点,因为它只描述了一种非常特殊的格式。其他任何内容都取决于实现。
假设您的字符串始终采用这种格式,并且您希望将其解释为 UTC,您的选择是:
调整字符串以在日期和时间部分之间包含一个
T
分隔符,并以Z
结尾以指示 UTC。var newDate = new Date(dateToConvert.replace(' ','T') + 'Z');
自己解析字符串:
var parts = dateToConvert.split(/[-: ]/g).map((x) => parseInt(x)); parts[1]--; // Months are 0-11, so adjust var newDate = new Date(Date.UTC(...parts));
使用类似Luxon的库:
var dt = luxon.DateTime.fromFormat(dateToConvert, 'yyyy-MM-dd HH:mm:ss', { zone: 'UTC' }); var newDate = dt.toJSDate();
或Moment:
var newDate = moment.utc(dateToConvert).toDate();