# Dotnet - 运行时 / 日期时间（AnalyseNG.NET 专有）

## `strtodatetime2(s)`

声明：function

字符串->日期时间(包含毫秒)

| 参数 | 类型   | 说明                                                                                                           |
| ---- | ------ | -------------------------------------------------------------------------------------------------------------- |
| `s`  | string | S的格式必须为：yyyy-m-d h:m:s:z    其中日期和时间需要用空格隔开，时间分隔必须用:    如"2021-8-12 10:31:24:199" |

返回：tdatetime

### 示例

```tsl
// 字符串2021-8-12 10:31:24:199 转换为日期时间格式(包含毫秒)
s := "2021-8-12 10:31:24:199";
return strtodatetime2(s); // 结果：44420.4384745255
```

## `strToDateExt(s, str_format)`

声明：function

将字符串类型的日期按照不同的格式转换成实数型的日期。

| 参数         | 类型    | 说明                                       |
| ------------ | ------- | ------------------------------------------ |
| `s`          | string  | 字符串类型的日期，包含3中形式，见下表。    |
| `str_format` | integer | 标准化的日期格式，对应的S分别用0、1、2表示 |

返回：tdatetime

### 示例

```tsl
s := '16/1/2011';
str_format := 0;
return strToDateExt(s, str_format);
// 结果：40559
```

## `excelIntToDate(r_date)`

声明：function

将报告期类型日期转化成实数型

| 参数     | 类型    | 说明               |
| -------- | ------- | ------------------ |
| `r_date` | integer | 整型类的报告期日期 |

返回：tdatetime

### 示例

```tsl
// 报告期为2010年年报
r_date := 20101231;
return excelIntToDate(r_date);
// 结果：40543
```

## `excelDateToInt(r_date)`

声明：function

将日期型报告期转化成整数型报告期

| 参数     | 类型      | 说明         |
| -------- | --------- | ------------ |
| `r_date` | tdatetime | 日期型报告期 |

返回：integer

### 示例

```tsl
r_date := 20101231;
return excelDateToInt(r_date);
// 结果：20101231
```

## `formatStrToDateTime2(s, format_str)`

声明：function

字符串->日期时间(包含毫秒)。

| 参数         | 类型   | 说明                   |
| ------------ | ------ | ---------------------- |
| `s`          | string | 字符串类型，时间字符串 |
| `format_str` | string | 字符串类型，格式字符串 |

返回：datetime

### 示例

```tsl
// 字符串2021-8-12 10:31:24:199 转换为日期时间格式(包含毫秒)
s := "2021.01.04T23:00:00.000";
format_str := "yyyy.mm.ddThh:nn:ss.zzz";
return formatStrToDateTime2(s, format_str); // 结果：44200.9583333333
```

## `startOfTheHalfYear(end_t)`

声明：function

返回Endt所在半年的开始日期（半年的第一天）

| 参数    | 类型      | 说明 |
| ------- | --------- | ---- |
| `end_t` | tdatetime | 日期 |

返回：tdatetime

### 示例

```tsl
end_t := 40599; // 40559表示2011年1月16号
return startOfTheHalfYear(end_t);
// 结果：40544  //40544表示2011年1月1号
```

## `startOfTheQuarter(end_t)`

声明：function

返回Endt所在季度的开始日期（季度的第一天）

| 参数    | 类型      | 说明 |
| ------- | --------- | ---- |
| `end_t` | tdatetime | 日期 |

返回：tdatetime

### 示例

```tsl
end_t := 40540; // 40540表示2010年12月28日
return startOfTheQuarter (end_t);
// 结果：40452  //40452表示2010年10月1号
```

## `endOfTheQuarter(end_t)`

声明：function

返回Endt所在季度的截止日期（季度的最后一天）

| 参数    | 类型      | 说明 |
| ------- | --------- | ---- |
| `end_t` | tdatetime | 日期 |

返回：tdatetime

### 示例

```tsl
end_t := 40540; // 40540表示2010年12月28日
return endOfTheQuarter (end_t);
// 结果：40543  //40543表示2010年12月31号
```

## `endOfTheHalfYear(end_t)`

声明：function

返回Endt所在半年的截止日期（半年的最后一天）

| 参数    | 类型      | 说明 |
| ------- | --------- | ---- |
| `end_t` | tdatetime | 日期 |

返回：tdatetime

### 示例

```tsl
end_t := 40540; // 40540表示2010年12月28日
return endOfTheHalfYear (end_t);
// 结果：40543  //40543表示2010年12月31号
```

## `incHalfYear(a_value, number)`

声明：function

求Avalue的日期开始往后推移Number个半年的日期

| 参数      | 类型      | 说明                             |
| --------- | --------- | -------------------------------- |
| `a_value` | tdatetime | 实数表示的日期                   |
| `number`  | integer   | 向后推移的整数，负数表示向前推移 |

返回：tdatetime

### 示例

```tsl
avalue := 40179; // 40179表示2010年1月1号
number := 2;
return incHalfYear(a_value, number);
// 结果：40544  //40544表示2011年1月1号
```

## `incQuarter(avalue, number)`

声明：function

求Avalue的日期开始往后推移Number个季度的日期

| 参数     | 类型      | 说明                               |
| -------- | --------- | ---------------------------------- |
| `avalue` | tdatetime | 实数表示的日期                     |
| `number` | integer   | 向后推移的整数。负数表示向前推移。 |

返回：tdatetime

### 示例

```tsl
avalue := 40179; // 40179表示2010年1月1号
number := 2;
return incQuarter(a_value, number);
// 结果：40360  //40360表示2010年7月1号
```

## `excelRDate(r_date)`

声明：function

将整数报告期转换成Excel的字符串日期类型

| 参数     | 类型    | 说明                       |
| -------- | ------- | -------------------------- |
| `r_date` | integer | 报告期，一般用整型日期表示 |

返回：string

### 示例

```tsl
r_date := 20101231;
return excelRDate(r_date);
// 结果：2010-12-31
```

## `incPrecodeCallBack(s)`

声明：function

将“000002.SZ”的代码转化为“SZ000002”

| 参数 | 类型   | 说明   |
| ---- | ------ | ------ |
| `s`  | string | 字符串 |

返回：string

### 示例

```tsl
return incPrecodeCallBack('000002.SZ');
// 结果：’SZ000002’
```

## `IncomeTax_12(r_date)`

声明：function

最近12个月的所得税。 （1）所得税取自合并利润分配表； （2）根据最近12个月的算法得到最近12个月的所得税【注1】。

| 参数     | 类型     | 说明           |
| -------- | -------- | -------------- |
| `r_date` | datetime | 整数，报告期。 |

返回：float

## `IncomeTax_Year(r_date, n)`

声明：function

最近N年的所得税。 （1）取向后兼容的最新年报Q1，取N-1年前同期的年报Q2； （2）在合并利润分配表取Q2报告期的所得税。

| 参数     | 类型     | 说明           |
| -------- | -------- | -------------- |
| `r_date` | datetime | 整数，报告期； |
| `n`      | any      | 整数，最近N年  |

返回：float

## `IncomeTax_Q(r_date)`

声明：function

计算指定报告期最近1季度的所得税。 根据季度数据的算法【注3】，函数从合并现金流量表中取出多个报告期的筹资活动产生的现金流，计算最近1季度的所得税。

| 参数     | 类型     | 说明           |
| -------- | -------- | -------------- |
| `r_date` | datetime | 整数，报告期； |

返回：float

## `Time_InvFun(left_values, right_values)`

声明：function

根据两个输入序列计算逆函数序列。

| 参数           | 类型  | 说明     |
| -------------- | ----- | -------- |
| `left_values`  | array | 左侧序列 |
| `right_values` | array | 右侧序列 |

返回：array

## `Times_Granger(y_values, x_values, lag_order, alpha)`

声明：function

检验 `x_values` 是否为 `y_values` 的 Granger 原因。

| 参数        | 类型  | 说明         |
| ----------- | ----- | ------------ |
| `y_values`  | array | 被解释序列   |
| `x_values`  | array | 候选原因序列 |
| `lag_order` | any   | 滞后阶数     |
| `alpha`     | float | 显著性水平   |

返回：array

## `Times_Cointergration_test(y_values, x_values, diff_order, alpha, lag_order, criterion)`

声明：function

执行两个序列的协整检验。

| 参数         | 类型   | 说明                             |
| ------------ | ------ | -------------------------------- |
| `y_values`   | array  | 第一条时间序列                   |
| `x_values`   | array  | 第二条时间序列                   |
| `diff_order` | any    | 差分阶数                         |
| `alpha`      | float  | 显著性水平                       |
| `lag_order`  | any    | 滞后阶数                         |
| `criterion`  | string | 信息准则；常用 `"AIC"`、`"SBIC"` |

返回：array

## `Times_Cointergration(y_values, x_values, alpha)`

声明：function

判断两个序列是否存在协整关系。

| 参数       | 类型  | 说明           |
| ---------- | ----- | -------------- |
| `y_values` | array | 第一条时间序列 |
| `x_values` | array | 第二条时间序列 |
| `alpha`    | float | 显著性水平     |

返回：string

## `Times_ECM(y_values, x_values, residuals, alpha, p_order, q_order)`

声明：function

建立误差修正模型。

| 参数        | 类型  | 说明                |
| ----------- | ----- | ------------------- |
| `y_values`  | array | 第一条时间序列      |
| `x_values`  | array | 第二条时间序列      |
| `residuals` | array | 协整检验残差项      |
| `alpha`     | float | 显著性水平          |
| `p_order`   | any   | `y_values` 滞后阶数 |
| `q_order`   | any   | `x_values` 滞后阶数 |

返回：array

## `Times_GrangerCausality(series_matrix, lag_order)`

声明：function

对矩阵中的多个序列执行两两 Granger 因果检验。

| 参数            | 类型  | 说明                                                |
| --------------- | ----- | --------------------------------------------------- |
| `series_matrix` | array | 多个时间序列组成的矩阵；可由两条序列用 `left_series |
| `lag_order`     | any   | 滞后阶数                                            |

返回：array

## `Time_PACF(y)`

声明：function

偏自相关系数，计算随机序列与所有滞后阶数的偏自相关系数，返回结果是一个数组。偏相关系数的计算公式如下： 是自相关系数，是偏相关系数

| 参数 | 类型  | 说明                     |
| ---- | ----- | ------------------------ |
| `y`  | array | 样本序列，为一维数组类型 |

返回：array

## `Time_RandomTest(y, m, alpha)`

声明：function

Ljung和Box提出的修正Qm统计量，用于检验序列是否为白噪声，原假设为白噪声序列，即纯随机序列。（Hypothesis为1表示接受原假设，0表示拒绝原假设） Qm统计量的计算公式如下： 其中：是自相关系数，T是样本容量，m是最大滞后长度

| 参数    | 类型  | 说明                                           |
| ------- | ----- | ---------------------------------------------- |
| `y`     | array | 样本序列，为一维数组类型                       |
| `m`     | any   | 最大滞后长度，整数类型，一般取样本数的四分之一 |
| `alpha` | float | 显著性水平，实数类型，取值在0-1之间            |

返回：array

## `Times_ADFTest(y, diff, style, f, p, alpha)`

声明：function

时间序列的平稳性ADF检验；返回结果为ADF统计量和给定显著性水平下的ADF统计量的临界值；如果ADF统计量的绝对值比临界值的绝对值大，则可在该显著性水平下，拒绝原序列存在单位根的原假设，即原序列是平稳的

| 参数    | 类型   | 说明                                                                                  |
| ------- | ------ | ------------------------------------------------------------------------------------- |
| `y`     | array  | 时间序列数据，为一维数组类型                                                          |
| `diff`  | any    | 差分次数，整数类型，0表示不进行差分                                                   |
| `style` | any    | 是否存在常数或趋势项的选项，整数类型，无常数无趋势使用0、有常数无趋势1、有常数有趋势2 |
| `f`     | string | 滞后阶数判断信息准则，字符串类型，"SBIC"，"AIC"                                       |
| `p`     | any    | 滞后阶数，为整型类型，输入0则表示自动选择                                             |
| `alpha` | float  | 显著性水平，实数类型，范围在0-1之间                                                   |

返回：array

## `Time_GreenFun(ap, mq)`

声明：function

中间函数，ARMA模型的Green函数，Green函数的递推公式如下： 式中： ，，是自回归方程系数，为移动平均系数，

| 参数 | 类型  | 说明                           |
| ---- | ----- | ------------------------------ |
| `ap` | array | 自相关系数，为一维数组类型；   |
| `mq` | array | 移动平均系数，为一维数组类型； |

返回：array

## `incPrecode()`

声明：function

6位代码->8位代码；注意，该函数主要用于客户端结果处理，不提供给用户程序编辑

返回：array,tablearray
