dtnpf35197 2019-09-12 17:48
浏览 53

如何在文件和结构中设置日期和日期数组

I have to save a record per request after 60s which I have to save to my appsettings.json the records like for example

09/13/2019 11:38 AM: request count last 60s : 4
09/13/2019 12:40 PM: request count last 60s : 6

In my struct I set this as

// Appsettings struct
    Appsettings struct {
        Requests []Requests `request`
    }

    // Requests struct
    Requests struct {
        RequestDate string      `requestDate`
        Datas       []time.Time `datas`
    }

My goal is to count the number of request after 60s and count the request.

If you have any suggestion how can I display this

09/13/2019 11:38 AM: request count last 60s : 4
09/13/2019 12:40 PM: request count last 60s : 6

and store this in my file.

  • 写回答

1条回答 默认 最新

  • doudun2212 2019-09-12 18:20
    关注

    This sample code:

    package main
    
    import (
        "fmt"
        "time"
    )
    
    type Requests struct {
        RequestDate string      `requestDate`
        Datas       []time.Time `datas`
    }
    
    type Appsettings struct {
        Requests []Requests `request`
    }
    
    var appsettings Appsettings
    
    func addRequest(requestTime time.Time) {
        timeString := requestTime.Format("01/02/2006 03:04 PM")
    
        requestFound := false
        for key, request := range appsettings.Requests {
            if request.RequestDate == timeString {
                requestFound = true
                request.Datas = append(request.Datas, requestTime)
                appsettings.Requests[key] = request
            }
        }
    
        if requestFound == false {
            newRequest := Requests{
                RequestDate: timeString,
                Datas: make([]time.Time, 0),
            }
            newRequest.Datas = append(newRequest.Datas, requestTime)
            appsettings.Requests = append(appsettings.Requests, newRequest)
        }
    }
    
    func printRequests() {
        for _, request := range appsettings.Requests {
            fmt.Printf("%s: request count last 60s : %d
    ", request.RequestDate, len(request.Datas))
        }
    }
    
    func main() {
        appsettings = Appsettings{}
        appsettings.Requests = make([]Requests, 0)
    
        requestTime, _ := time.Parse(time.RFC3339, "2006-09-13T11:04:00Z")
        addRequest(requestTime)
    
        requestTime, _ = time.Parse(time.RFC3339, "2006-09-13T15:04:00Z")
        addRequest(requestTime)
    
        requestTime, _ = time.Parse(time.RFC3339, "2006-09-13T15:04:59Z")
        addRequest(requestTime)
    
        requestTime, _ = time.Parse(time.RFC3339, "2006-09-13T15:05:01Z")
        addRequest(requestTime)
    
        printRequests()
    }
    

    Reproduce this output:

    09/13/2006 11:04 AM: request count last 60s : 1
    09/13/2006 03:04 PM: request count last 60s : 2
    09/13/2006 03:05 PM: request count last 60s : 1
    

    Go playground link: https://play.golang.org/p/XqyhScHDW8R

    评论

报告相同问题?

悬赏问题

  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条