javascript - 如何在javascript中根据本月动态获取当前3个月?
问题描述
JSON
[
{
"title": "Formula1",
"month": "2020-03",
"recieved_qty": 1020
},
{
"title": "NewFormula",
"month": "2020-03",
"recieved_qty": 10
}
]
Html:这里的月份是硬编码的。相反,我需要根据当前月份动态月份名称。例如 => 这个月是三月,应该动态获取三月、四月和五月。你能帮我做这件事吗?
<div class="d-flex flex-row">
<div style="font-size: 12px">Forecasted Product</div>
<div style="margin-left: 15%;">Jan 2020</div>
<div style="margin-left: 15%;">Feb 2020</div>
<div style="margin-left: 15%;">Mar 2020</div>
</div>
<div formArrayName="schedularList" *ngFor="let item of schedulerArray.controls; let i = index;">
<div [formGroupName]="i" class="add-div">
<div class="d-flex flex-row" style="width:160px">
<mat-form-field>
<mat-select placeholder="Formulation" formControlName="formulation">
<mat-option *ngFor="let item of formulationList" [value]="item.title"> {{item.title}} </mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<input matInput formControlName="quantity1" placeholder="Quantity">
</mat-form-field>
<mat-form-field>
<input matInput formControlName="quantity2" placeholder="Quantity">
</mat-form-field>
<mat-form-field>
<input matInput formControlName="quantity3" placeholder="Quantity">
</mat-form-field>
</div>
</div>
</div>
<div class="add-div" (click)="addItem()">
<span>Add Product for Forecast +</span>
<!-- <i class="material-icons" >add_circle_outline</i> -->
</div>
component.ts:This.formulationList 将得到上面给出的 JSON
我需要根据当前月份动态获得 3 个月。然后我需要匹配月份并修补在 schedulerList formarray 中声明的数量值。
getRpsbasedOnMonth() {
const payload = {
company_id: this.userService.getUserdetails().CompanyUser.company_id.id
}
this.store.dispatch(new GetRPsBasedOnMonth(payload))
this.store.pipe(select(getRpsBasedOnMonthSuccess)).subscribe((result: any) => {
if (!!result) {
console.log(result)
this.formulationList = result.map(item => {
item.month = item.month.substring(5, 8)
return item
})
console.log(this.formulationList)
}
})
this.store.pipe(select(getRpsBasedOnMonthError)).subscribe((result: any) => {
if (!!result) {
console.log(result)
alert(result.error)
}
})
}
解决方案
你只需要 JS 日期操作?
const result = [{
"title": "Formula1",
"month": "2020-03",
"recieved_qty": 1020
},
{
"title": "NewFormula",
"month": "2020-03",
"recieved_qty": 10
}
]
const [ year, month ] = result[0].month.split('-');
const date = new Date(year, month - 1, 1, 0, 0, 0);
const divs = document.querySelectorAll("#forecast>div:not(:first-child)");
for (let div of divs) {
div.textContent = `${date.toLocaleString('default', { month: 'short' })}
${date.getFullYear()}`
date.setMonth(date.getMonth() + 1)
}
<div id="forecast">
<div>Forecasted Product</div>
<div style="margin-left: 15%;"></div>
<div style="margin-left: 15%;"></div>
<div style="margin-left: 15%;"></div>
</div>
推荐阅读
- javascript - 按字母顺序对api的json响应进行排序
- python-3.x - 带有用于定义变量的输入的函数不会执行
- python - 就地矩阵乘法 __imatmul__ 返回修改后的对象
- javascript - 是否有一个 JS 函数可以按函数值对列表进行排序
- laravel - AWS ElasticBeanstalk 上的 Laravel 应用程序未连接到 RDS 数据库
- javascript - 尝试在 D3.js (v3) 中沿圆弧路径为圆设置动画
- docker - 从现有的 docker 镜像创建 docker 镜像并运行新的 docker 镜像
- go - time.Duration * time.Duration 应用了两次
- python - 使用正则表达式后 Pandas .loc 不起作用?
- javascript - 如何修复在数据上添加前导零的逻辑?