首先获取本地时间可以通过使用
let zeroTime:any = new Date()
//或者当前项目如果使用的ant design的日期组件的话,也就是有引入dayjs的话
//也可以用dayjs获取到:
const zeroTime:any = dayjs()
//若要传给后端的话或者后端返回过来的话,要做string处理,使得回显的值能正确绑定组件的话,记得要这么写
```javascript
dayjs(zeroTime, 'DD/MM/YYYY HH:mm:ss')
接下来,针对获取到的本地时间做0时区转换的处理的记录:
第一种,使用原生js的写法做处理
let zeroTime:any = new Date()
const day = String(zeroTime.getUTCDate()).padStart(2, '0'); // 获取日期,并在需要时补零
const month = String(zeroTime.getUTCMonth() + 1).padStart(2, '0'); // 获取月份,并在需要时补零
const year = zeroTime.getUTCFullYear(); // 获取年份
const hours = String(zeroTime.getUTCHours()).padStart(2, '0'); // 获取小时,并在需要时补零
const minutes = String(zeroTime.getUTCMinutes()).padStart(2, '0'); // 获取分钟,并在需要时补零
const seconds = String(zeroTime.getUTCSeconds()).padStart(2, '0'); // 获取秒钟,并在需要时补零
const formattedDate = `${day}/${month}/${year} ${hours}:${minutes}:${seconds}`;
console.log(formattedDate);
第二种 使用moment提供的方法,首先确保你已经npm过moment组件并引入进来了。
使用 Moment.js 的 moment()方法将 date 转换为 Moment 对象。最后,使用 .format() 方法将 Moment 对象格式化为指定的格式,这里是’DD/MM/YYYY HH:mm:ss’
.utcOffset() 方法用于设置或获取当前 Moment 对象的时区偏移量。 时区偏移量是指当前 Moment 对象与 UTC(协调世界时)之间的时间差。正偏移表示当前 Moment 对象比 UTC 时间要晚,负偏移表示当前 Moment 对象比 UTC时间要早。
.utcOffset() 方法可以接受两种形式的参数: .utcOffset(offset:number):以分钟为单位设置时区偏移量。
正整数表示比 UTC 时间晚的偏移量,负整数表示比 UTC时间早的偏移量。
例如,.utcOffset(120) 表示当前 Moment 对象比 UTC 时间晚 2 小时。
.utcOffset(offset: string):以形如 “+HH:mm” 或 “-HH:mm"的字符串格式设置时区偏移量。
例如,.utcOffset(”+02:00") 表示当前 Moment 对象比 UTC 时间晚 2 小时。
如果不传递参数给 .utcOffset() 方法,则返回当前 Moment 对象的时区偏移量。
.utcOffset(0) 表示将当前
Moment 对象的时区偏移量设置为 0,即与 UTC 时间保持一致,也就是将时间转换为零时区的时间。
let zeroTime:any = new Date()
moment(zeroTime).utcOffset(0).format('DD/MM/YYYY HH:mm:ss')
注意如果使用的是ant design的时间组件,那么v-model绑定的时间返回格式若要用moment插件转换时区,需要先对v-model绑定的值做格式处理。
例如
moment(effectiveTo.format('YYYY-MM-DD HH:mm:ss'),'YYYY-MM-DD HH:mm:ss').utcOffset(0).format('YYYY-MM-DD HH:mm:ss')
看moment括号中的内容。左边对v-model绑定的值做格式处理,右侧写出转换之后的格式是什么样的。便于moment知道当前是什么类型的值。使用utcOffset(0)转换为0时区,转换之后的格式要求是什么样的就写成什么样