我编写了一个 go 程序,它同时执行许多任务(在 goroutine 中),并在控制台上显示这些任务的状态,如下所示 -
[Ongoing] Task1
[Ongoing] Task2
[Ongoing] Task3
Run Code Online (Sandbox Code Playgroud)
现在,这些任务中的任何一个都可以首先完成或最后完成。我想在同一位置更新这些任务的状态。如果Task2首先完成,那么它应该显示类似这样的内容 -
[Ongoing] Task1
[Done] Task2
[Ongoing] Task3
Run Code Online (Sandbox Code Playgroud)
我尝试了uilive库,但它总是像这样更新最后一行。(我认为这不是为了更新多行)
[Ongoing] Task1
[Ongoing] Task2
[Done] Task2
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?
我试图获取特定时区特定月份的开始和结束时间,特别是“亚洲/加尔各答”(UTC+05:30)。
例如,以下是 2023 年 9 月的开始和结束时间。
开始时间: 2023-09-01 00:00:00
结束时间: 2023-09-30 23:59:59
我用Java实现了以下功能:
public static Long getStartTimeStampOfMonth(Month month, Year year) {
LocalDate startDate = LocalDate.of(year.getValue(), month, 1);
LocalDateTime startDateTime = LocalDateTime.of(startDate, LocalTime.MIN);
ZonedDateTime istDateTime = startDateTime.atZone(ZoneId.of("Asia/Kolkata"));
return Timestamp.valueOf(istDateTime.toLocalDateTime()).getTime();
}
public static Long getEndTimeStampOfMonth(Month month, Year year) {
LocalDate startDate = LocalDate.of(year.getValue(), month, 1);
LocalDate endDate = startDate.withDayOfMonth(startDate.lengthOfMonth());
LocalDateTime endDateTime = LocalDateTime.of(endDate, LocalTime.MAX);
ZonedDateTime istDateTime = endDateTime.atZone(ZoneId.of("Asia/Kolkata"));
return Timestamp.valueOf(istDateTime.toLocalDateTime()).getTime();
}
Run Code Online (Sandbox Code Playgroud)
但是,我注意到上面的代码根据计算机上配置的时区返回开始和结束时间。即使我已明确指定 ZoneId.of("Asia/Kolkata"),它也不会产生所需的结果。
当我在设置为 UTC 时区的计算机上测试 2023 年 9 月的代码时,我得到以下输出:
开始时间:1693526400000
结束时间:1696118399999 …