From what I can understand is the following:
dateCreatedis when the writer first starting with the article. Nothing has been made public yet for reading.
dateCreatedcan be earlier or the same as
datePublished, but not later.
datePublishedis when the writer is finished with the article and has made it available online for reading.
dateModifiedis when the article is modified.
The above is my opinion. What is the general opinion regarding this?
If an article has not be edited will it then contain nothing/null for
dateModified? The reason why I ask is because when you run your code through the structured data testing tool it says that
dateModified is not required but recommended. How can it be recommended for articles that have not been edited from their original source? Should
dateModified then be the same as
datePublished just so that the red error message can go away? Or shouldn't I worry about it and treat it as a warning?
dateModified set for the first time? After
dateCreated or after