iso8601

package module
v0.0.0-...-d517014 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2015 License: MIT Imports: 2 Imported by: 2

README

iso8601

Build Status

iso8601 is a simple Go package for encoding time.Time in JSON in ISO 8601 format, without subsecond resolution or time zone info.

This is a fork of the version created by joeshaw that adds support for implementing encoding according to google/go-querystring.

package main

import (
	"encoding/json"
	"fmt"
	"time"

	"github.com/google/go-querystring/query"
	"github.com/schallert/iso8601"
)

type ReqOpts struct {
	Created iso8601.Time `url:"created_at"`
}

func main() {
	t := time.Now()

	// Standard JSON format
	// "2014-03-25T16:15:25.701623113-04:00"
	data, _ := json.Marshal(t)
	fmt.Println(string(data))

	// ISO8601 JSON format
	// "2014-03-25T16:15:25"
	data, _ = json.Marshal(iso8601.Time(t))
	fmt.Println(string(data))

	// Output after decoding back to go.  Note the loss of
	// precision and time zone info.
	// 2014-03-25 16:15:25 +0000 +0000
	var t2 iso8601.Time
	json.Unmarshal(data, &t2)
	fmt.Println(t2)

	// URL encoded format
	// created_at=2015-09-02T14%3A41%3A08
	opts := ReqOpts{
		Created: iso8601.Time(t),
	}
	v, _ := query.Values(opts)
	fmt.Println(v.Encode())
}

Documentation

Overview

The iso8601 package encodes and decodes time.Time in JSON in ISO 8601 format, without subsecond resolution or time zone info.

Index

Constants

View Source
const Format = "2006-01-02T15:04:05"

Variables

This section is empty.

Functions

This section is empty.

Types

type Time

type Time time.Time

func New

func New(t time.Time) Time

New constructs a new iso8601.Time instance from an existing time.Time instance. This causes the nanosecond field to be set to 0, and its time zone set to a fixed zone with no offset from UTC (but it is *not* UTC itself).

func (Time) EncodeValues

func (it Time) EncodeValues(key string, v *url.Values) error

Implements the google/go-querystring `Encoder` interface so that our ISO 8601 time can be encoded in both JSON and query string format

func (Time) ISOString

func (it Time) ISOString() string

ISOString returns a string version of the time in its ISO8601 format

func (Time) MarshalJSON

func (it Time) MarshalJSON() ([]byte, error)

func (Time) String

func (it Time) String() string

func (*Time) UnmarshalJSON

func (it *Time) UnmarshalJSON(data []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL