Though you are using strncpy(), your string is not null-terminated.
(update: to quote from the docs for strncpy on my machine "if there is no null byte among the first n bytes of src, the result will not be null-terminated.") To fix this probably you can do one of the following:
Add a date = '\0'; line.
Use newSVpvn(date,8) to create a string of
a specific length.
I would note that your current use of newSVpvf() should be replaced with newSVpv(date,0) or similar, to prevent
odd behavior and/or
major security flaws from popping up if your data contains
%s. (Or, at least, to prevent you from
getting in to the habit of coding that way for when it would matter.)