I am trying to understand what the statement below is doing:

```
tmptr = localtime(&t);

```

The complete code is:

```
main() {
    char dateString[20], timeString[20];
    struct tm *tmptr;
    time_t t;
    t = time(NULL);
    tmptr = localtime(&t);
    strftime(dateString, 20, "%F",tmptr)
    printf("%s %s\n",dateString,timeString);
}

```

I understand that the function `time(NULL)` gives the time in seconds from the UNIX Epoch. But I do not understand why:

1. `NULL` passed in `time()`? What if I pass a non-null value? I couldn't understand the man page here.
2. What does the `localtime()` actually do here?