dayjs 获取时间差
时间: 2024-02-18 11:56:18 浏览: 84
以下是使用dayjs获取时间差的例子:
```python
import dayjs
# 获取两个时间的时间差
start_time = dayjs('2022-01-01')
end_time = dayjs('2022-01-10')
diff = end_time.diff(start_time, 'day')
print(diff) # 输出:9
```
上述代码中,我们首先导入了dayjs模块,然后定义了两个时间变量start_time和end_time,分别表示起始时间和结束时间。接着,我们使用dayjs的diff()函数获取了两个时间的时间差,并将时间差以天为单位存储在变量diff中。最后,我们输出了时间差的值。
相关问题
uniapp 使用 dayjs
在 UniApp 中使用 `dayjs` 库可以轻松地进行日期和时间的处理。以下是使用 `dayjs` 的基本步骤:
1. 安装 `dayjs` 库:在 UniApp 项目的根目录下,打开终端并执行以下命令安装 `dayjs`:
```
npm install dayjs --save
```
2. 在需要使用 `dayjs` 的页面或组件中引入库:
```javascript
import dayjs from 'dayjs'
```
3. 使用 `dayjs` 进行日期和时间的操作。以下是一些常用方法的示例:
- 获取当前日期和时间:
```javascript
const currentDate = dayjs().format('YYYY-MM-DD')
const currentTime = dayjs().format('HH:mm:ss')
```
- 格式化日期和时间:
```javascript
const date = dayjs('2022-01-01').format('YYYY年MM月DD日')
const time = dayjs('12:30:00', 'HH:mm:ss').format('hh:mm A')
```
- 获取时间差:
```javascript
const start = dayjs('2022-01-01')
const end = dayjs('2022-01-02')
const duration = end.diff(start, 'days') // 获取相差的天数
```
- 获取特定日期的前后几天:
```javascript
const today = dayjs()
const tomorrow = today.add(1, 'day').format('YYYY-MM-DD')
const yesterday = today.subtract(1, 'day').format('YYYY-MM-DD')
```
这些只是 `dayjs` 库的一些基本用法,你可以根据具体需求查阅 `dayjs` 的文档,了解更多功能和用法。
优化这段代码:// 获取周报开始时间和结束时间 const getWeekBetweenTime = async (val: string) => { let startTime: string; let endTime: string; // 判断是否是1月 if (val.slice(-2) === '01') { startTime = dayjs().format('YYYY-MM-DD'); // 获取工作周设定数据 let res: any = await getWeekData(val.substring(0, 4)); if (res) { startTime = res; } else { startTime = ''; } } else { // 不是1月 let startWeek = dayjs(`${val}-01`).day(); // 星期一时间 if (startWeek === 1) { startTime = dayjs(`${val}-01`).format('YYYY-MM-DD'); } else { // 非星期一时间 - 获取礼拜一 startTime = dayjs(`${val}-01`).subtract(startWeek - 1, 'day').format('YYYY-MM-DD'); } } // 获取当前月星期几 let endWeek = dayjs(`${val}-01`).endOf('month').day(); // 计算结束时间 if (endWeek === 0) { endTime = dayjs(`${val}-01`).endOf('month').format('YYYY-MM-DD'); } else { endTime = dayjs(`${val}-01`).endOf('month').add(7 - endWeek, 'day').format('YYYY-MM-DD'); } return { startTime: startTime, endTime: endTime, }; };
可以优化的地方如下:
1. 减少重复代码:多次使用 `${val}-01`,可以将其提取出来,只计算一次即可。
2. 简化逻辑:可以将判断是否是1月的代码和获取开始时间的代码合并,这样可以减少一次代码分支。
3. 使用 dayjs 提供的函数:dayjs 提供了一些函数可以简化代码,例如 `startOf` 和 `add`,可以用来代替手动计算时间差的代码。
修改后的代码如下:
```typescript
const getWeekBetweenTime = async (val: string) => {
const date = dayjs(`${val}-01`);
let startTime: string;
if (date.month() === 0) {
// 1月份
const res = await getWeekData(val.substring(0, 4));
startTime = res || date.format('YYYY-MM-DD');
} else {
// 非1月份
const startWeek = date.day();
const monday = date.subtract(startWeek - 1, 'day');
startTime = startWeek === 1 ? date.format('YYYY-MM-DD') : monday.format('YYYY-MM-DD');
}
const endWeek = date.endOf('month').day();
const lastDay = date.endOf('month');
const end = endWeek === 0 ? lastDay : lastDay.add(7 - endWeek, 'day');
return {
startTime,
endTime: end.format('YYYY-MM-DD'),
};
};
```
阅读全文