Current section

Files

Jump to
azure lib storage date_time_utils.ex
Raw

lib/storage/date_time_utils.ex

defmodule Azure.Storage.DateTimeUtils do
@moduledoc """
DateTimeUtils
"""
use Timex
def utc_now,
# https://docs.microsoft.com/en-us/rest/api/storageservices/representation-of-date-time-values-in-headers
do:
Timex.now()
|> Timex.format!("{RFC1123z}")
|> String.replace(" Z", " GMT")
# "2019-02-05T16:43:10.4730000Z" |> Azure.Storage.DateTimeUtils.date_parse_iso8601()
def date_parse_iso8601(date) do
{:ok, result, 0} = date |> DateTime.from_iso8601()
result
end
# Azure expects dates in YYYY-MM-DDThh:mm:ss.fffffffTZD,
# where fffffff is the *seven*-digit millisecond representation.
# &DateTime.to_iso8601/1 only generates six-digit millisecond
def to_string_iso8601(date_time),
do:
date_time
|> DateTime.to_iso8601()
|> String.replace_trailing("Z", "0Z")
# "Tue, 05 Feb 2019 16:58:12 GMT" |> Azure.Storage.DateTimeUtils.date_parse_rfc1123()
def date_parse_rfc1123(str) do
Timex.parse!(str, "{RFC1123}")
end
def to_string(timex_time),
# https://docs.microsoft.com/en-us/rest/api/storageservices/representation-of-date-time-values-in-headers
do:
timex_time
|> Timex.format!("{WDshort}, {0D} {Mshort} {YYYY} {0h24}:{0m}:{0s} GMT")
end