Puppet Function: time

Defined in:
modules/stdlib/lib/puppet/parser/functions/time.rb
Function type:
Ruby 3.x API

Overview

time()Any

> Note: that since Puppet 4.8.0 the Puppet language has the data types Timestamp (a point in time) and Timespan (a duration). The following example is equivalent to calling time() without any arguments:

“`Timestamp()“`

Examples:

*Usage*


time()
Will return something like: 1311972653

Returns:

  • (Any)

    the current time since epoch as an integer.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'modules/stdlib/lib/puppet/parser/functions/time.rb', line 5

newfunction(:time, :type => :rvalue, :doc => <<-DOC
  @summary
    This function will return the current time since epoch as an integer.

  @return
    the current time since epoch as an integer.

  @example **Usage**

    time()
    Will return something like: 1311972653

  > *Note:* that since Puppet 4.8.0 the Puppet language has the data types Timestamp (a point in time) and
  Timespan (a duration). The following example is equivalent to calling time() without
  any arguments:

  ```Timestamp()```

  DOC
           ) do |arguments|

  # The Time Zone argument is optional ...
  time_zone = arguments[0] if arguments[0]

  if !arguments.empty? && (arguments.size != 1)
    raise(Puppet::ParseError, "time(): Wrong number of arguments given #{arguments.size} for 0 or 1")
  end

  time = Time.new

  # There is probably a better way to handle Time Zone ...
  if time_zone && !time_zone.empty?
    original_zone = ENV['TZ']

    local_time = time.clone
    local_time = local_time.utc

    ENV['TZ'] = time_zone

    result = local_time.localtime.strftime('%s')

    ENV['TZ'] = original_zone
  else
    result = time.localtime.strftime('%s')
  end

  # Calling Time#to_i on a receiver changes it.  Trust me I am the Doctor.
  result = result.to_i

  return result
end