Get current date and time in GitHub workflows

A clean solution is to use ${{ github.event.repository.updated_at}} which is pretty close to current datetime$(date +%Y%m%d%H%M)

Format is ISO 8601
e.g 2022-05-15T23:33:38Z

Pros:

  • Doesn't require shell execution
  • Directly accessible from all your workflow
  • Allows cross-referencing with GitHub events

Cons:

  • Strict format
    you can still modify the format in a shell
    e.g. echo ${{ github.event.repository.updated_at}} | sed 's/:/./g'
  • Not available with Act testing framework

References:
Github context
Event object


From this post you can create a step that set its output with the value $(date +'%Y-%m-%d')

Then use this output using ${{ steps.date.outputs.date }}. The following show an example for environment variables and for inputs :

on: [push, pull_request]
name: build
jobs:
  build:
    name: Example
    runs-on: ubuntu-latest
    steps:
      - name: Get current date
        id: date
        run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
      - name: Test with environment variables
        run: echo $TAG_NAME - $RELEASE_NAME
        env:
          TAG_NAME: nightly-tag-${{ steps.date.outputs.date }}
          RELEASE_NAME: nightly-release-${{ steps.date.outputs.date }}
      - name: Test with input
        uses: actions/hello-world-docker-action@master
        with:
          who-to-greet: Mona-the-Octocat-${{ steps.date.outputs.date }}

Outputs :

* Test with environment variables
nightly-tag-2020-03-31 - nightly-release-2020-03-31

* Test with input
Hello Mona-the-Octocat-2020-03-31

Here's another way to do this via environment variables (from this post):

name: deploy
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Set current date as env variable
        run: echo "NOW::$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV
      - name: Echo current date
        run: echo $NOW

This sets the date as an environment variable, which is useful if you want to consume it in scripts / programs in subsequent steps.