Q:

Can AWS DynamoDB DocumentClient handle native Javascript Date objects?

I'm using DocumentClient (http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html) to make working with DynamoDB easier.  However, it seems like it is having trouble with Date objects.  I know that DynamoDB wants dates formatted specifically Date (as ISO8601 millisecond-precision string, shifted to UTC). 
Does DocumentClient just not handle this, or is there something that needs to be set on the Date object?
For now, I've just been converting the value to a string via toString().
The expires_at value is the value specifically:
This one does not include expires_at in the DyanmoDB Item.
{ 
  Item:
  { 
    id: 'session',
    credentials: 
    { 
      access_token: '',
      refresh_token: '',
      token_type: 'Bearer',
      expires_in: 3599,
      expires_at: 2017-04-17T18:48:03.608Z 
    } 
  },
  TableName: 'table' 
}

And this one will include it:
{ 
  Item:
  { 
    id: 'session',
    credentials: 
    { 
      access_token: '',
      refresh_token: '',
      token_type: 'Bearer',
      expires_in: 3599,
      expires_at: 'Mon Apr 17 2017 18:50:24 GMT+0000 (UTC)' 
    } 
  },
  TableName: 'table' 
}

A:

DocumentClient is just an abstraction layer for DynamoDB. So, if the Date data type is not supported in DynamoDB, it won't be supported in DocumentClient. (See DynamoDB Data Types)
What you can do is pass the ISO 8601 string using the toISOString() method. For example:
var expires = new Date();
expires.setTime(expires.getTime() + (60*60*1000)); // Add 1 hour.

{ 
  Item:
  { 
    id: 'session',
    credentials: 
    { 
      access_token: '',
      refresh_token: '',
      token_type: 'Bearer',
      expires_in: 3599,
      expires_at: expires.toISOString() 
    } 
  },
  TableName: 'table' 
}

