把字符串1998-10-01 08:10:00 解析成time.Time ,再格式化成字符串 199810010810
思路分析
把字符串s1转时间,那就得先弄出 时间的格式
时间格式有两种 下面代码实例的 format1和format2
format1 := "2006-01-02 15:04:05" // 时间字符串格式
format2 := "20060102150405" // 另一种 时间格式字符串
那就先把字符串 s1解析为时间字符串
使用 time.ParseInLocation()
ParseInLocationh函数:
第一个参数:时间格式化字符串,用于指定输入时间字符串的格式。
第二个参数:要解析的时间字符串,其格式必须与第一个参数指定的时间格式相匹配。
第三个参数:要使用的时区信息,是一个 time.Location 类型的对象。
解析完成后,再用Format函数转化成format2格式
time.Format()函数:
func (t Time) Format(layout string) string
这个参数layout是一个模板字符串,用于指定时间的输出格式
意思是 我调用这个函数将我自己转化成为参数的格式,返回值是 转化后的格式也就是s2(19981001081000)
代码实现:
package main
import (
"fmt"
"time"
)
func timeFormat() {
format1 := "2006-01-02 15:04:05" // 时间字符串格式
format2 := "20060102150405" // 另一种 时间格式字符串
s1 := "1998-10-01 08:10:00"
loc, _ := time.LoadLocation("Asia/Shanghai") // 加载指定时区的信息
t, _ := time.ParseInLocation(format1, s1, loc) // 参数1是时间格式化字符串,参数2是要解析的时间字符串,参3是时区,返回参数2解析后
s2 := t.Format(format2) // t转化为 format2格式
fmt.Println(s2) // 19981001081000
}
输出未来上课日期
我们是周六上课,输出我们未来4次课的上课日期(不考虑法定假日)
思路分析
- 获取当前时间: 代码开始时,通过调用
time.Now()函数获取了当前的日期和时间,将结果存储在now变量中。 - 计算距离下个周六还有多少天: 通过计算当前日期的星期几(
now.Weekday())和距离下个周六还有多少天(sub变量)来确定下个周六的日期。如果今天就是周六(sub等于 0),则将interval设置为 7,表示一周后的周六。 - 获取最近一个周六的日期: 使用
now和interval计算了最近一个周六的日期,并将结果存储在firstSaturday变量中。这个日期代表了第一个上课日期。 - 循环计算未来的上课日期: 使用
for循环,代码计算并输出未来三个周六的日期。在每次迭代中,通过将firstSaturday增加 7 天(一周的时间间隔),来计算下一个上课日期。 - 打印输出: 使用
fmt.Println()函数,将当前日期和计算出的上课日期打印到标准输出,以便用户查看。
总的来说,代码的目标是计算和输出未来几个周六的上课日期。它从当前日期出发,通过日期和时间的操作,确定了第一个上课日期,并在循环中计算并输出了未来的日期。这个代码示例可以用于类似课程计划或活动计划的应用中,以确定未来的特定日期。
代码实现
package main
import (
"fmt"
"time"
)
func keDay() {
//1.先获取当前时间
now := time.Now()
//2.1寻找距离下个周六还有多久
sub := 6 - int(now.Weekday())
fmt.Println(sub) //
interval := sub // 下一个周距今天隔了几天
if sub == 0 {
interval = 7
}
//2.2获取最近一个周六的时间
firstSatuday := now.Add(24 * time.Duration(interval) * time.Hour)
fmt.Println(firstSatuday.Format("2006-01-02"))
//3.遍历循环 每次 +7天
for i := 0; i < 3; i++ {
firstSatuday = firstSatuday.Add(24 * 7 * time.Hour)
fmt.Println(firstSatuday)
}
}
注意事项
time.Now(): 这个函数用于获取当前的日期和时间。now.Weekday(): 这个方法用于获取当前日期是一周中的哪一天(星期几),返回值是一个time.Weekday类型的枚举值,例如time.Sunday、time.Monday等。fmt.Println(): 这个函数用于在控制台上打印输出信息。它在代码中用于输出计算结果和调试信息。time.Duration: 这个类型表示时间间隔,例如24 * time.Hour表示一天的时间间隔。now.Add(): 这个方法用于在当前时间的基础上添加一个时间间隔,从而得到一个新的时间。
在这段代码中,首先获取了当前日期和时间,然后计算了距离下个周六还有多少天,以确定第一个上课日期。然后,使用一个循环来计算并输出未来几个周六的日期,每次将日期增加一周。
注意事项和建议:
- 代码中的日期计算是基于当前日期进行的。因此,确保代码在执行时的日期和时间是正确的,以获得正确的结果。
- 如果需要计算不同的上课日期,可以调整循环次数或修改日期增加的方式。例如,如果需要计算未来三个周五的日期,可以将
firstSaturday = firstSaturday.Add(24 * 7 * time.Hour)改为firstSaturday = firstSaturday.Add(24 * 7 * time.Hour)。 - 考虑将日期格式作为参数进行配置,以使代码更灵活。在代码中使用
time.Format()函数可以根据需要输出不同的日期格式。 - 为了提高代码的可维护性,可以将日期计算和输出逻辑封装成函数,并为函数提供适当的注释和文档。
- 在实际应用中,还应该处理错误和异常情况,例如输入无效日期时的错误处理。这个示例代码中没有包含错误处理,但在生产环境中通常需要添加。