将JS日期时间转换为MySQL日期时间

198

有人知道如何将JS日期时间转换为MySQL日期时间吗?此外,是否有一种方法可以向JS日期时间添加特定数量的分钟,然后将其传递给MySQL日期时间?

28个回答

0

简单:只需替换 T。 我从我的 <input class="form-control" type="datetime-local" 中得到的格式是: "2021-02-10T18:18"

所以只需替换 T,它会变成这样:"2021-02-10 18:18" SQL 就可以使用了。

这是我的函数:

var CreatedTime = document.getElementById("example-datetime-local-input").value;

var newTime = CreatedTime.replace("T", " ");

参考: https://www.tutorialrepublic.com/faq/how-to-replace-character-inside-a-string-in-javascript.php#:~:text=Answer%3A%20Use%20the%20JavaScript%20replace,the%20global%20(%20g%20)%20modifier

https://www.tutorialrepublic.com/codelab.php?topic=faq&file=javascript-replace-character-in-a-string


0

const dateToSqlDate = (date) => date.toISOString().slice(0, -5).replace('T', ' ')

console.log(dateToSqlDate(new Date()))


0

如果考虑时区偏移,这个怎么样?

const getTimestamp = (date = false) => {
  const d = ! date ? new Date() : new Date(date);

  return new Date(d - d.getTimezoneOffset() * 60 * 1000).toJSON().replace('T', ' ').split('.')[0];
}

console.log(getTimestamp());
console.log(getTimestamp('2016-6-23 1:54:16'));


0

在其他答案的基础上构建的解决方案,同时保持时区和前导零:

var d = new Date;

var date = [
    d.getFullYear(),
    ('00' + d.getMonth() + 1).slice(-2),
    ('00' + d.getDate() + 1).slice(-2)
].join('-');

var time = [
    ('00' + d.getHours()).slice(-2),
    ('00' + d.getMinutes()).slice(-2),
    ('00' + d.getSeconds()).slice(-2)
].join(':');

var dateTime = date + ' ' + time;
console.log(dateTime) // 2021-01-41 13:06:01

0

我用了很久,对我非常有帮助,随意使用

Date.prototype.date=function() {
    return this.getFullYear()+'-'+String(this.getMonth()+1).padStart(2, '0')+'-'+String(this.getDate()).padStart(2, '0')
}

Date.prototype.time=function() {
    return String(this.getHours()).padStart(2, '0')+':'+String(this.getMinutes()).padStart(2, '0')+':'+String(this.getSeconds()).padStart(2, '0')
}

Date.prototype.dateTime=function() {
    return this.getFullYear()+'-'+String(this.getMonth()+1).padStart(2, '0')+'-'+String(this.getDate()).padStart(2, '0')+' '+String(this.getHours()).padStart(2, '0')+':'+String(this.getMinutes()).padStart(2, '0')+':'+String(this.getSeconds()).padStart(2, '0')
}

Date.prototype.addTime=function(time) {
    var time=time.split(":")
    var rd=new Date(this.setHours(this.getHours()+parseInt(time[0])))
    rd=new Date(rd.setMinutes(rd.getMinutes()+parseInt(time[1])))
    return new Date(rd.setSeconds(rd.getSeconds()+parseInt(time[2])))
}

Date.prototype.addDate=function(time) {
    var time=time.split("-")
    var rd=new Date(this.setFullYear(this.getFullYear()+parseInt(time[0])))
    rd=new Date(rd.setMonth(rd.getMonth()+parseInt(time[1])))
    return new Date(rd.setDate(rd.getDate()+parseInt(time[2])))
}

Date.prototype.subDate=function(time) {
    var time=time.split("-")
    var rd=new Date(this.setFullYear(this.getFullYear()-parseInt(time[0])))
    rd=new Date(rd.setMonth(rd.getMonth()-parseInt(time[1])))
    return new Date(rd.setDate(rd.getDate()-parseInt(time[2])))
}

然后只需要:

new Date().date()

返回当前日期的'MySQL格式'

用于添加时间的是

new Date().addTime('0:30:0')

这将增加30分钟...等等


0

对我来说没问题:

function DateToSql(d: Date): string {
    let dt: Date = new Date(d.getTime());
    dt.setTime(dt.getTime() - dt.getTimezoneOffset() * 60000);
    return dt.toISOString().slice(0, 19).replace('T', ' ');
}

0
不需要外部库或字符串操作。
创建js日期对象(我使用日期选择器格式作为示例),并将其转换为瑞典本地格式,这与mysql使用的格式相同。
var local_time ="Fri Oct 06 2023 01:01:25 GMT+0300 (Eastern European Summer Time)";

const d = new Date(local_time);      // d=2023-10-05T22:01:25.000Z
today = d.toLocaleString('sv-SE');   // 2023-10-06 01:01:25 

然后使用MYSQL函数将时区转换为mysql UTC时间。
select convert_tz('2023-10-06 01:01:25','+03:00', 'SYSTEM') // 2023-10-05 22:01:25

0
简单而快捷的方法将DateTime(YYYY-MM-DD HH:MM:SS)存储到MySQL数据库中。
const [dateTime, setDateTime] = useState('');

setDateTime(new Date(YOUR_DATETIME).toLocaleString('sv-SE')); // Any Date formate into this formate (YYYY-MM-DD HH:MM:SS)

// On submit or Something conditions

axios.post('url',dateTime).then((res)=>{});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接