I am using tidyr and lubridate to convert a wide table to a long table. The following works just fine.
> (df <- data.frame(hh_id = 1:2,
                   bday_01 = ymd(20150309),
                   bday_02 = ymd(19850911),
                   bday_03 = ymd(19801231)))
  hh_id    bday_01    bday_02    bday_03
1     1 2015-03-09 1985-09-11 1980-12-31
2     2 2015-03-09 1985-09-11 1980-12-31
> gather(df, person_num, bday, starts_with("bday_0"))
  hh_id  person_num        bday
1     1     bday_01  2015-03-09
2     2     bday_01  2015-03-09
3     1     bday_02  1985-09-11
4     2     bday_02  1985-09-11
5     1     bday_03  1980-12-31
6     2     bday_03  1980-12-31
However, when there are NA's in the mix, the dates are converted to strings.
> (df <- data.frame(hh_id = 1:2,
                   bday_01 = ymd(20150309),
                   bday_02 = ymd(19850911),
                   bday_03 = NA))
  hh_id    bday_01    bday_02    bday_03
1     1 2015-03-09 1985-09-11         NA
2     2 2015-03-09 1985-09-11         NA
> gather(df, person_num, bday, starts_with("bday_0"))
  hh_id person_num       bday
1     1    bday_01 1425859200
2     2    bday_01 1425859200
3     1    bday_02  495244800
4     2    bday_02  495244800
5     1    bday_03         NA
6     2    bday_03         NA
Warning message:
attributes are not identical across measure variables; they will be dropped 
Note that there is still a warning when regular strings are mixed with NA's as well.
> (df <- data.frame(hh_id = 1:2,
                    bday_01 = '20150309',
                    bday_02 = '19850911',
                    bday_03 = NA))
  hh_id  bday_01  bday_02 bday_03
1     1 20150309 19850911      NA
2     2 20150309 19850911      NA
> gather(df, person_num, bday, starts_with("bday_0"))
  hh_id person_num     bday
1     1    bday_01 20150309
2     2    bday_01 20150309
3     1    bday_02 19850911
4     2    bday_02 19850911
5     1    bday_03     <NA>
6     2    bday_03     <NA>
Warning message:
attributes are not identical across measure variables; they will be dropped 
Is it possible to use tidyr with NA's while avoiding a warning and retaining formatting?