ISO 8601 string in job output is automatically parsed

I have the following dummy example workflow that is behaving strangely.

There are two jobs. The first job sets an environment variable to a timestamp in the first step, then in the second step outputs that environment variable, and then the job outputs the timestamp. The second job depends on the first, setting an environment variable based on the output from the first job. Instead of getting the string “2020-05-06T14:05:44.000Z” when I echo the value, I am getting the string “05/06/2020 14:05:44”. Somehow it appears that the date string is detected and parsed into another format between the jobs. If I add some characters to the output, the reformatting doesn’t seem to happen, but I can’t find any other clean way to disable this behavior.

name: What's up with the timestamp??

on:
  push:
    branches:
      - whats_up_ts


jobs:
  job1:
    runs-on: ubuntu-latest
    steps:
      - name: Setup environment and set output
        run: |
          echo "::set-env name=TRAINING_START_TIMESTAMP::2020-05-06T14:05:44.000Z"
      - name: set output
        id: report
        run: |
          echo "::set-output name=TRAINING_START_TIMESTAMP::$TRAINING_START_TIMESTAMP"
    outputs:
      TRAINING_START_TIMESTAMP: ${{steps.report.outputs.TRAINING_START_TIMESTAMP}}

  job2:
    runs-on: ubuntu-latest
    needs: job1
    steps:
      - name: Setup environment and print timestamp
        run: |
          echo "::set-env name=TRAINING_START_TIMESTAMP::${{needs.job1.outputs.TRAINING_START_TIMESTAMP}}"
      - name: Show me the ts!
        run: echo $TRAINING_START_TIMESTAMP

As a workaround , you could add ‘’ surround the timestamp string.

 echo "::set-env name=TRAINING_START_TIMESTAMP::'2020-05-06T14:05:44.000Z'"

The value of TRAINING_START_TIMESTAMP will include ‘’ .

I also didn’t find a clean way to disable this datetime reformatting behavior, I created an issue in runner repo, please follow on it and check what developer team say.