前端获取当月日历上的首尾时间
时间: 2023-12-12 10:04:11 浏览: 36
如果你想要获取当月日历上的首尾时间,可以使用如下代码:
```javascript
// 获取当月第一天的时间戳
const firstDayTimestamp = new Date(new Date().setDate(1)).getTime();
// 获取当月最后一天的时间戳
const lastDay = new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0);
const lastDayTimestamp = lastDay.getTime() + 24 * 60 * 60 * 1000 - 1;
```
上述代码中,我们首先使用 `new Date().setDate(1)` 获取当月的第一天,并将其转换为时间戳,从而获取当月第一天的时间戳。然后,我们使用 `new Date().getFullYear()` 获取当前年份,使用 `new Date().getMonth() + 1` 获取当前月份,再使用 `0` 获取下个月的第一天,从而获取当月的最后一天。最后,我们将最后一天的时间戳加上一天的毫秒数,并减去 1,从而获取当月最后一天的时间戳。
这样,我们就可以使用 `firstDayTimestamp` 和 `lastDayTimestamp` 变量来获取当月日历上的首尾时间了。
相关问题
前端获取当月日历上的第一天和最后一天
你可以使用 JavaScript 中的 Date 对象来获取当月日历上的第一天和最后一天。具体实现方法如下:
```javascript
// 获取当月第一天
const firstDayOfMonth = new Date();
firstDayOfMonth.setDate(1);
// 获取当月最后一天
const lastDayOfMonth = new Date();
lastDayOfMonth.setMonth(lastDayOfMonth.getMonth() + 1);
lastDayOfMonth.setDate(0);
```
上述代码中,我们首先创建了一个 Date 对象,并将其设置为当前时间。然后,我们使用 setDate 方法将日期设置为 1,从而获取当月的第一天。接着,我们再创建一个 Date 对象,并将其月份设置为下个月的第一天,然后将日期设置为 0,从而获取当月的最后一天。
这样,我们就可以使用 firstDayOfMonth 和 lastDayOfMonth 变量来获取当月日历上的第一天和最后一天了。
C语言 获取当前日期并打印输出当月日历
获取当前日期可以使用 C 语言中的 time.h 库中的 time() 函数,该函数返回从 1970 年 1 月 1 日 0 时 0 分 0 秒(UTC,即格林威治时间)到现在所经过的秒数。获取当前日期的代码如下:
```c
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
struct tm *now = localtime(&t);
int year = now->tm_year + 1900; // 年份需要加上 1900
int month = now->tm_mon + 1; // 月份从 0 开始,需要加上 1
int day = now->tm_mday;
printf("当前日期:%d 年 %d 月 %d 日\n", year, month, day);
return 0;
}
```
接下来是如何打印输出当月日历的问题。可以使用以下算法:
1. 获取当月第一天是星期几。
2. 打印日历表头。
3. 根据当月天数和第一天是星期几,打印日历表格。
具体代码如下:
```c
#include <stdio.h>
#include <time.h>
int main() {
time_t t = time(NULL);
struct tm *now = localtime(&t);
int year = now->tm_year + 1900;
int month = now->tm_mon + 1;
int day = now->tm_mday;
// 获取当月第一天是星期几
struct tm first_day = *now;
first_day.tm_mday = 1; // 从第一天开始
mktime(&first_day); // 计算
int first_day_weekday = first_day.tm_wday; // 星期几,0 表示周日,1 表示周一,以此类推
// 打印表头
printf(" %d 年 %d 月\n", year, month);
printf("日 一 二 三 四 五 六\n");
// 打印当月日历
int i, j;
for (i = 0; i < first_day_weekday; i++) {
printf(" "); // 填充空格
}
for (j = 1; j <= 31; j++) {
if (j > 1 && j <= day) {
printf("%2d ", j); // 用两个字符的宽度打印日期
} else {
printf("%2s ", ""); // 填充空格
}
if ((j + first_day_weekday) % 7 == 0) {
printf("\n"); // 每周换行
}
if (j > 28 && j >= now->tm_mday) {
break; // 当月日期已经打印完毕
}
}
return 0;
}
```
注意,这个算法没有考虑闰年的情况,也没有考虑每个月的天数不同的情况。如果需要支持这些功能,需要进行更复杂的计算。