# * posting dates

# ** 1. posting dates can be set with a tag. Also the year can be
# inferred from the transaction. If there are multiple tags, the first
# is used. Date separators /-. are allowed.
<
2000/1/2
   a  0   ; date: 3/4,  date: 4-5, date:6.7
$ hledger -f- register
> /^2000-03-04/

# ** 2. If the date: or date2: tags do not have a valid simple date
# value, there should be a corresponding error at the right position
<
comment
Journal comment to prevent this being parsed as a timedot file
end comment

2000/1/1
   a  0   ; date: 3.31

2000/1/2
   b  0
       ; date: 3.32

$ hledger -f- register
>2 /10:16/
>= 1

# ** 3. Ledger's bracketed date syntax is also supported: `[DATE]`,
# `[DATE=DATE2]` or `[=DATE2]`. This is equivalent to using `date:` or
# `date2:` tags.
<
2000/1/2
   a  0   ; [=3-4]
$ hledger -f- register --date2
> /^2000-03-04/

# ** 4. Date parsing and error reporting activates for square brackets
# containing only `0123456789/-.=` characters.
<
comment
Journal comment to prevent this being parsed as a timedot file
end comment

2000/1/2
   a  0   ; [3/4 ] space, causes this to be ignored

2000/1/2
   b  0   ; [1/1=1/2/3/4] bad second date, should error

$ hledger -f- register
>2 /-:9:21/
>= 1

# ** 5. In this example, the second posting's later date causes the third posting to be processed
# before it, inferring a -1 amount, causing this transaction to be considered unbalanced. (#2025)
<
2023-01-01
    Expenses    1
    Assets     -1      ; date: 2023-01-02
    Assets        = -1
$ hledger -f- print
>2 /
1 \| 2023-01-01
  \|     Expenses               1
  \|     Assets                -1  ; date: 2023-01-02
  \|     Assets                -1 = -1

This transaction is unbalanced.
/
>= 1
