Hi onyx.
I believe you are misunderstanding what a widget is, and confusing that with what a date field is.
There is a difference between a "date field" and a "date field widget". The widget is just the form portion that is used to collect a date from the user. A "date field" can use different types of widgets: date_html5, date_select, date_text and date_popup (all of them defined in date_field_widget_info()).
So, after entering the date through a form widget, the processors transform that information into a standard structure that gets stored in the date field table.
When you load a node, the date field structure is "attached" to the node object.
From what you posted, I gather you want to programmatically set a value for a date field attached to a node. To do that, you only need to know the field structure for the date fields (there is no reason to know anything about the HTML5 widget to do that).
Now, there are three types of date field types:
All three of them use slightly different structures when attached to a node object. See image:
So, you see, if you want to programmatically set the date field for the node, first you need to now what type of date field you have in that node, then use any of the structures above. The timezone identifiers are all listed here.
Now, perhaps I'm misunderstanding what you want to do...
BTW, this is how I obtained what you see above in the picture:
1. I attached 3 date fields to the Page content type
2. I created a node and enter values in the fields
3. In the Devel PHP page I did dpm(node_load(NID));
One more thing:
In order to correctly set the time in the field structure, you MUST use UTC time. So your date_format call should look like:
format_date(strtotime('now'), 'custom', 'Y-m-d H:i:s', 'UTC');
Notice the UTC.