Where do you process timezone calculations, is it better do do it on the server or on the client using a javascript library like moment?

Currently I am doing it on server using this library:
<https://github.com/camroncade/timezone>

and these two:

```
public function getPublishedAtAttribute()
{
    if(Auth::guest()) {
        return $this->attributes['published_at']->format('Y-m-d\TH:i\Z');
    }
    else {
        $timezone = Auth::user()->timezone;
        if(isset($this->attributes['published_at']))
            return Timezone::convertFromUTC($this->attributes['published_at'], $timezone, 'Y-m-d H:i');
        else
            return null;
    }
}

public function setPublishedAtAttribute($published_at)
{
    if($published_at) {
        $published_at_temp = new Carbon($published_at, Auth::user()->timezone);
        $this->attributes['published_at'] = Timezone::convertToUTC($published_at_temp->addSeconds(59), Auth::user()->timezone);
    }
    elseif(!$this->published_at) {
        $this->attributes['published_at'] = Carbon::now();
    }
}

```

Are there any minuses for doing it on the server or any pluses doing it on the client?

Which is better approach?