Golang实现日历功能遇到问题请求帮助

Golang实现日历功能遇到问题请求帮助 你好,

作为编程新手,我需要一些帮助。我想创建一个日程表来记录我的孩子们何时从他们母亲那里过来与我同住。我有五个孩子,其中三个与前妻生活,两个与我同住。

对于我想构建的程序,我希望输入一个日期(格林威治标准时间)作为起始点。程序需要询问我那个周末有多少个孩子与我同住(5个或2个)。

每隔一个周末,我所有的孩子都会来我这里,所以孩子数量是5个或2个。我希望程序能为我生成从周五到周日的列表,持续52周。

希望我已经清楚地表达了我的需求。目前我无法将日期与"周末0"对应起来。

感谢支持!

1 回复

更多关于Golang实现日历功能遇到问题请求帮助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


以下是使用Go语言实现的解决方案,可以帮助你生成52周的周末日历。这个程序会从给定的起始日期开始,计算每个周末的日期和对应的孩子数量。

package main

import (
	"fmt"
	"time"
)

func main() {
	// 设置起始日期(格林威治标准时间)
	startDateStr := "2024-01-05" // 示例起始日期,你可以修改为实际起始日期
	startDate, err := time.Parse("2006-01-02", startDateStr)
	if err != nil {
		fmt.Println("日期解析错误:", err)
		return
	}

	// 询问初始周末的孩子数量
	var initialKids int
	fmt.Print("请输入第一个周末的孩子数量(5或2): ")
	_, err = fmt.Scan(&initialKids)
	if err != nil || (initialKids != 5 && initialKids != 2) {
		fmt.Println("输入无效,请输入5或2")
		return
	}

	// 生成52周的周末列表
	generateWeekendCalendar(startDate, initialKids, 52)
}

func generateWeekendCalendar(startDate time.Time, initialKids int, weeks int) {
	currentDate := startDate
	kidsCount := initialKids

	for week := 0; week < weeks; week++ {
		// 计算周五、周六、周日的日期
		friday := currentDate
		saturday := currentDate.AddDate(0, 0, 1)
		sunday := currentDate.AddDate(0, 0, 2)

		// 输出周末信息
		fmt.Printf("周末 %d:\n", week+1)
		fmt.Printf("  周五: %s, 孩子数量: %d\n", friday.Format("2006-01-02"), kidsCount)
		fmt.Printf("  周六: %s, 孩子数量: %d\n", saturday.Format("2006-01-02"), kidsCount)
		fmt.Printf("  周日: %s, 孩子数量: %d\n", sunday.Format("2006-01-02"), kidsCount)
		fmt.Println()

		// 更新下一个周末的起始日期(增加14天,即两周)
		currentDate = currentDate.AddDate(0, 0, 14)

		// 切换孩子数量(5和2交替)
		if kidsCount == 5 {
			kidsCount = 2
		} else {
			kidsCount = 5
		}
	}
}

代码说明:

  1. 起始日期设置:程序使用time.Parse解析输入的起始日期(示例中为"2024-01-05",你可以根据需要修改)。
  2. 孩子数量输入:程序会提示你输入第一个周末的孩子数量(5或2)。
  3. 周末生成逻辑
    • 从起始日期开始,计算每个周末的周五、周六和周日日期。
    • 每隔一周(14天)生成下一个周末,持续52周。
    • 孩子数量在5和2之间交替变化,模拟"每隔一个周末所有孩子都来"的情况。

运行示例:

假设起始日期为2024-01-05,第一个周末孩子数量为5,程序会输出类似以下内容:

周末 1:
  周五: 2024-01-05, 孩子数量: 5
  周六: 2024-01-06, 孩子数量: 5
  周日: 2024-01-07, 孩子数量: 5

周末 2:
  周五: 2024-01-19, 孩子数量: 2
  周六: 2024-01-20, 孩子数量: 2
  周日: 2024-01-21, 孩子数量: 2

...

这个程序直接解决了你的需求,生成52周的周末日历,并自动处理孩子数量的交替。如果需要调整起始日期或周数,可以修改代码中的startDateStrweeks参数。

回到顶部