使用算术运算的右侧计算周数的类型必须为 'any'



我一直在围绕"分配"以寻找在我的程序中使用的代码,该代码将使用TypeScript计算我的Angular App中的周数(根据ISO标准)。仅在JavaScript中找到一块代码非常困难,但是我想我可能会发现一些问题 - 我遇到了一个错误:算术操作的右侧必须类型为"任何",'数字'或枚举类型。

我不知道这意味着什么。这是我尝试编写以使用代码的服务:

import { Injectable } from '@angular/core';
@Injectable()
export class WeekNumberService {
  constructor() { }
 ISO8601_week_no(dt)  {
  var tdt = new Date(dt.valueOf());
  var dayn = (dt.getDay() + 6) % 7;
  tdt.setDate(tdt.getDate() - dayn + 3);
  var firstThursday = tdt.valueOf();
  tdt.setMonth(0, 1);
  if (tdt.getDay() !== 4) 
    {
   tdt.setMonth(0, 1 + ((4 - tdt.getDay()) + 7) % 7);
     }
  return 1 + Math.ceil((firstThursday - tdt) / 604800000);
  }
}

ps:我最终只是在寻找一周的编号。

tdtDatefirstThursday被推断为number,因为tdt.valueOf()自1970年1月1日午夜,UTC返回代表毫秒毫秒的数字,UTC。

您不能在这两个变量之间使用算术操作:

firstThursday - tdt.

无论如何,您的实际代码并非旨在返回您在此处指定的 iso_8601周的表示。您在返回String时返回Date
例如,此输入Date Monday 29 December 2008应返回此String"2009-W01-1"

获得一年,一周的日期是直接的日期提供:

的方法
var dayNumber = date.getDay() + 1;
var year = date.getFullYear();

大约一周的数量,您必须实施此功能。
我邀请您在本文的接受答案中依靠代码。

然后,只需串联以下三个值:

String isoWeek = year + "-W-" + weekNumber + "-" + dayNumber;

最新更新