How to parse JSON date using regular expressions in Go?

WBOY
Release: 2024-06-03 15:27:08
Original
371 people have browsed it

How to parse JSON date using regular expressions? Use the regular expression "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{ 2})(.\d+)?Z$" matches JSON dates in the format "YYYY-MM-DDTHH:MM:SS.mmmZ". Parse the date through the regexp.MatchString function and print "Date parsed successfully" when parsed successfully.

如何在 Go 中使用正则表达式解析 JSON 日期?

How to use regular expressions to parse JSON dates in Go

Go provides a powerful regular expression library that can be used Parse and process complex text, including JSON dates. This article will guide you step by step in parsing JSON dates with regular expressions and provide a practical case.

Regular expression syntax

The following regular expression can be used to match JSON dates:

/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?Z$/
Copy after login

This expression can match the format "YYYY-MM -DDTHH:MM:SS.mmmZ" date, where:

  • YYYY: Year
  • MM: Month
  • DD: Date
  • HH: Hours
  • MM: Minutes
  • SS: Seconds
  • mmm: Milliseconds (optional)
  • Z: Zulu time zone

Go code

The following Go code shows how to use regular expressions to parse JSON dates:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    date := "2023-07-04T13:30:00.123Z"

    matched, err := regexp.MatchString(`^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?Z$`, date)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }

    if matched {
        fmt.Println("Date parsed successfully")
    } else {
        fmt.Println("Invalid date format")
    }
}
Copy after login

Practical case

Suppose you have a JSON file named "dates.json" which contains an array of dates:

{
  "dates": [
    "2023-07-04T13:30:00.123Z",
    "2023-07-05T10:00:00Z",
    "2023-07-06T15:15:00Z"
  ]
}
Copy after login

Here is the modified code to parse the dates in the JSON file:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "regexp"
)

func main() {
    data, err := ioutil.ReadFile("dates.json")
    if err != nil {
        log.Fatal(err)
    }

    type DateResponse struct {
        Dates []string `json:"dates"`
    }

    var datesResponse DateResponse
    if err := json.Unmarshal(data, &datesResponse); err != nil {
        log.Fatal(err)
    }

    for _, date := range datesResponse.Dates {
        matched, err := regexp.MatchString(`^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(\.\d+)?Z$`, date)
        if err != nil {
            fmt.Println("Error:", err)
        }

        if matched {
            fmt.Println("Date parsed successfully")
        } else {
            fmt.Println("Invalid date format:", date)
        }
    }
}
Copy after login

The above is the detailed content of How to parse JSON date using regular expressions in Go?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!