中国标准时间的转换
中国标准时间格式Wed Jun 07 2023 09:52:05 GMT+0800 (中国标准时间)
转换为年月日 时分秒格式
console.log(new Date()); // Wed Jun 07 2023 09:52:05 GMT+0800 (中国标准时间)
/* --------------------------------------------------时间处理----------------------------------------------------------- */
let originDate = new Date(new Date());
let optionsFormat = { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' };
let convertTime = new Intl.DateTimeFormat('zh-CN', optionsFormat).format(originDate);
console.log(convertTime); // string类型
// 注:后端入库需要将string转换为date类型 to_date('要转换的字符串',转换的格式) to_date('2023/06/08 10:08:21',‘yyyy-mm-dd,hh24:mi:ss')
转换方法二 年月日
// 中国标准时间 转换成 年月日
function formatDateTime (date) {
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
var h = date.getHours();
var minute = date.getMinutes();
minute = minute < 10 ? ('0' + minute) : minute;
// return y + '-' + m + '-' + d+' '+h+':'+minute;
return y + '-' + m + '-' + d
};
补充
var关键字和let关键字: 1. 从作用域来看,var关键字作用于函数,let关键字作用于代码块
{}(作用域要小一些); 2. 变量提升: var可以先声明后使用,没有声明使用会时默认undefined,let要先声明后使用,否则报错。 3. 重复声明: var变量可以重复声明,如果重新声明,则原来的变量会被替换;let变量不可重复声明,重复声明会报错。
年月日时分秒字符串转化为中国标准时间
/* -------------------------------------------年月日 时分秒转换为中国标准时间-------------------------------------------- */
const dateAndTimeStr = '2023/06/09 09:52:05'; // 自定义日期字符串
// 解析日期字符串
const [dateStr, timeStr] = dateAndTimeStr.split(" "); // 拆分为两部分 日期和时间
const [year, month, day] = dateStr.split("/"); // 对年月日进行切割
const [hour, minute, second] = timeStr.split(":");
// 创建Date实例对象
const datetime = new Date(year, month - 1, day, hour, minute, second); // 月份特殊 月份为0-11 所以转换格式要在原来基础上减去1
// 转换为本地时间并设置时区为“Asia/Shanghai”
const chinaDateTime = datetime.toLocaleString("zh-CN", { timeZone: "Asia/Shanghai" })
console.log(chinaDateTime)
日期获取
var date = new Date(); // 方法可返回当天的日期和时间:为中国标准时间
date.getFullYear(); //获取完整的年份(4位) eg:2023
date.getMonth(); //获取当前月份(0-11,0代表1月,11代表12月) eg: 5 即为6月
date.getDate(); //获取当前日期对象是几号(1-31) eg: 8 即为8号
date.getDay(); //获取当前星期X(0-6,0代表星期天) eg: 3 即为星期三
date.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) 时间戳 eg:1686194058401
date.getHours(); //获取当前小时数(0-23) eg: 11 即为11时
date.getMinutes(); //获取当前分钟数(0-59) eg: 19 即为19分
date.getSeconds(); //获取当前秒数(0-59) eg: 20 即为20秒
date.getMilliseconds(); //获取当前毫秒数(0-999)
date.toLocaleDateString(); //获取当前日期 eg: 2023/6/8 获取年月日的日期格式
var myDate=date.toLocaleTimeString(); //获取当前时间(eg: 上午 10:31:52) myDate2=date.toTimeString(); //获取当前时间(eg: 10:31:52 GMT+0800(中国))
date.toLocaleString( ); //获取日期与时间 eg: 2023/6/8 11:24:23 日期明细的string格式
date.toDateString(); // Thu Jun 08 2023
getTime() //获取当前日期对象的时间戳(方法一)
date.valueof() //获取当前日期对象的时间戳(方法二)
Data.now() //获取当前日期对象的时间戳(方法三)
入库日期格式转换(后端)
此处后端数据库为Oracle
把string转换成date
举例: to_date()
后端sql effectDate日期格式可以为2023-02-13 12:20:23,2023/02/13 12:20:23,所以前端需要提前转换格式。
INSERT into RT01_08136DETAILSTRUC (DETAILEID,TABLENO,
FIELDNAME,FIELDTYPE,DATASIZE,ISKEY,DEFUALTVALUE,EFFECTDATE,
CREATORD,CREATETIMED,TABLENAME)
VALUES(RT01_08136DETAILSTRUC_tb_seq.NEXTVAL,'{tableNo}',
'{fieldName}','{fieldType}',{dataSize},'{isKey}','{defaultValue}',
to_date('{effectDate}','yyyy-MM-dd hh24:mi:ss'),'{creatord}',sysdate,'{tableName}')