Что такое «м» в метке времени и как получить метку времени без «м»? - PullRequest
0 голосов
/ 17 февраля 2019

В Go для time.Now (), получающего метку времени с m = xx.xxxx ... , что означает m ?

Как удалить его во время печати или Существуют ли другие способы или функции для получения метки времени без m

Например: - для time.Now (), получая вывод => 2009-11-10 23:00:00 +0000 UTC m = + 0,000000001

Но мне нужен такой вывод => 2009-11-10 23:00:00 +0000UTC

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Мне нужен вывод, как этот => 2009-11-10 23:00:00 +0000 UTC


Время упаковки

импорт «время»

монотонные часы

Операционные системы предоставляют как «настенные часы», которые могут быть изменены для синхронизации часов, так и «монотонные часы», которыене является.Общее правило заключается в том, что настенные часы предназначены для определения времени, а монотонные часы - для измерения времени.Вместо того, чтобы разделять API, в этом пакете время, возвращаемое временем. Теперь содержит чтение настенных часов и чтение монотонных часов;более поздние операции с указанием времени используют чтение настенных часов, но более поздние операции измерения времени, в частности сравнения и вычитания, используют монотонное считывание часов.

Канонический способ обрезки монотонных показаний часов состоит в использовании t = t.Round (0).

func (Time) Round 1.1

func (t Time) Round(d Duration) Time

Round возвращает результат округления t до ближайшего кратного d (начиная с нуля)время).Поведение при округлении для значений на полпути заключается в округлении.Если d <= 0, Round возвращает t без любых монотонных показаний часов, но в остальном без изменений. </p>

func (Time) String

func (t Time) String() string

String возвращает отформатированное времяс использованием строки формата

Если время имеет монотонное считывание часов, возвращаемая строка содержит конечное поле «m = ±», где значение - это монотонное считывание часов, отформатированное как десятичное число секунд.


Канонический способ снятия монотонных показаний часов - использовать t = t.Round(0).

Например,

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    fmt.Println(t)
    fmt.Println(t.Round(0))
}

Детская площадка: https://play.golang.org/p/nglDbs9IGdU

Вывод:

2009-11-10 23:00:00 +0000 UTC m=+0.000000001
2009-11-10 23:00:00 +0000 UTC
0 голосов
/ 17 февраля 2019

Все, что вам нужно, это:

    time.Now().Truncate(0)

В соответствии с документом time.String ()

Если время имеет монотонное чтение часов, возвращаемая строка содержит окончательнуюполе «m = ±», где значение - это монотонное чтение часов, отформатированное в виде десятичного числа секунд.

И time.Truncate () godoc говорит:

Усечениевозвращает результат округления t до значения, кратного d (начиная с нулевого времени).Если d <= 0, Truncate возвращает t без каких-либо монотонных показаний часов, но без изменений. </p>

...