Something like this might do the trick for you:
#!/bin/bash
cat << EOF
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
EOF
for ((i = 1; i <= 100; ++i)); do
cat << EOF
<div>
<time>$(date +"%Y-%m-%d %H:%M:%S" -d "+${i} days")</time>
<p>$(printf "test%02d" "${i}")</p>
</div>
EOF
done
cat << EOF
</body>
</html>
EOF
It starts out by printing the stuff that doesn't change at the top of the file. Next, it runs a loop from 1..100. Each time through the loop, it generates one div block. The time is the current time plus i days and the paragraph has test followed by i (padded with a single 0). It wraps up by printing the stuff that doesn't change at the end of the file.
A sample run:
$ ./ex.sh
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example</title>
</head>
<body>
<div>
<time>2020-10-17 22:57:00</time>
<p>test01</p>
</div>
<div>
<time>2020-10-18 22:57:00</time>
<p>test02</p>
</div>
...
<div>
<time>2021-01-23 21:57:01</time>
<p>test99</p>
</div>
<div>
<time>2021-01-24 21:57:01</time>
<p>test100</p>
</div>
</body>
</html>