zoukankan      html  css  js  c++  java
  • Golang时间字符串转换计算器

    [本文出自天外归云的博客园]

    分享一个常用的时间字符串的加减的小方法,可以把一种格式的时间字符串转化成日期时间后加减天数,再转化为目标格式返回。

    代码:

    package pintia
    
    import (
    	"fmt"
    	"time"
    )
    
    // TimeStrConverter 时间字符串转换计算器
    type TimeStrConverter struct {
    	InputDateFormat  string
    	OutPutDateFormat string
    }
    
    // AddDuration 时间字符串加减天
    // dateStr 是输入的时间字符串
    // n 天数(负数为减,正数为加)
    func (t *TimeStrConverter) AddDuration(dateStr string, n int) (string, error) {
    	// 1. 将dateStr按指定格式转换成时间
    	endDate, err := time.Parse(t.InputDateFormat, dateStr)
    	if err != nil {
    		return "", err
    	}
    	// 2. 加上n天——24*n小时
    	durationStr := fmt.Sprintf("%+vh", 24*n)
    	duration, _ := time.ParseDuration(durationStr)
    	startDate := endDate.Add(duration)
    	// 3. 将计算后的日期转成指定格式的时间字符串
    	startDateStr := startDate.Format(t.OutPutDateFormat)
    	return startDateStr, nil
    }
    

    测试代码:

    package pintia
    
    import (
    	"testing"
    
    	"github.com/stretchr/testify/assert"
    )
    
    func TestDateStrAddDuration(t *testing.T) {
    	// 准备测试数据
    	inputDateStr := "20210630"
    	durationDays := -3
    	timeStrConverter := TimeStrConverter{InputDateFormat: "20060102", OutPutDateFormat: "2006-01-02"}
    	// 执行待测方法
    	outputDateStr, err := timeStrConverter.AddDuration(inputDateStr, durationDays)
    	t.Logf("outputDateStr->%+v", outputDateStr)
    	// 断言
    	assert.Nil(t, err)
    	assert.Equal(t, "2021-06-27", outputDateStr)
    }
    

    运行结果:

  • 相关阅读:
    重置所有视图
    利用ASP发送和接收XML数据的处理方法
    win2003上传、下载大小限制的问题
    转 C#中文转换成累加拼音声母,直接使用
    用LogParser对IIS 日志进行分析
    应用于服务器的软件防火墙介绍
    ASP.NET Ajax资料收集贴
    BlackICE简单应用
    ajax 跨域访问解决方案
    IBM T61 上蓝牙软件BlueSoleil的使用方法
  • 原文地址:https://www.cnblogs.com/LanTianYou/p/14956349.html
Copyright © 2011-2022 走看看