Is your client a web page or a .NET app? If it is a .NET app you could do it like this. Firstly send your client timezone to your server like so:
string clientTimeZone = TimeZoneInfo.Local.ToSerializedString();
Then on your server:
var clientTimeZoneInfo = TimeZoneInfo.FromSerializedString(clientTimeZone);
var localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, clientTimeZoneInfo);
If this is a webapp use this javascript to send the offset to the server:
var timeNow = new Date();
var timezone = timeNow.getTimezoneOffset() / 60 * (-1);
Then on your server:
string clientTimeZoneOffset = "8";
var clientTimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone("client", new TimeSpan(0, Int32.Parse(clientTimeZoneOffset), 0, 0),
"client", "client");
var utcDateTime = DateTime.UtcNow;
DateTime localDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateTime, clientTimeZoneInfo);