根据客户端位置设置日期时间

Datetime according to Client location

本文关键字:日期 时间 设置 位置 客户端      更新时间:2023-09-26

我在数据库中有UTC的日期时间,现在我想根据用户的时区或用户的计算机显示时间,就像如果用户A有一个来自印度的问题,那么用户A可以根据印度看到提交的日期,如果用户A美国那么它显示根据美国,如果用户B在中国,那么他可以根据China查看该问题。我如何通过c#或javascript做到这一点。任何人都可以帮我做这件事。

您需要使用JavaScript从浏览器收集必要的信息—这部分请参见http://www.pageloom.com/automatic-timezone-detection-with-javascript

当你有了这些信息,你可以设置一个TimeZone/TimeZoneInfo,反过来可以用来调整你的UTC DateTime值。

另一个更简单的选择是使用jQuery插件TimeAgo
详细信息请参见c# UTC to Users Local Time

你可以这样做…通过使用javascript.....

此代码将以标准格式给出客户端时区偏移....

        <script type="text/javascript">
        // Original script by Josh Fraser (http://www.onlineaspect.com)
        // Some customization applied in this script code
        var minutes;
        function calculate_time_zone() {
            var rightNow = new Date();
            var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
            var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st
            var temp = jan1.toGMTString();
            var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ") - 1));
            temp = june1.toGMTString();
            var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ") - 1));
            var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
            var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
            var dst;
            if (std_time_offset == daylight_time_offset) {
                dst = "0"; // daylight savings time is NOT observed
            } else {
                // positive is southern, negative is northern hemisphere
                var hemisphere = std_time_offset - daylight_time_offset;
                if (hemisphere >= 0)
                    std_time_offset = daylight_time_offset;
                dst = "1"; // daylight savings time is observed
            }
            var i;
        // Here set the value of hidden field to the ClientTimeZone.
                         minutes = convert(std_time_offset);
            TimeField = document.getElementById("HiddenFieldClientTime");
            TimeField.value = minutes;
            alert('your time zone is ' + minutes);      
        }
        // This function is to convert the timezoneoffset to Standard format
        function convert(value) {
            var hours = parseInt(value);
            value -= parseInt(value);
            value *= 60;
            var mins = parseInt(value);
            value -= parseInt(value);
            value *= 60;
            var secs = parseInt(value);
            var display_hours = hours;
            // handle GMT case (00:00)
            if (hours == 0) {
                display_hours = "00";
            } else if (hours > 0) {
                // add a plus sign and perhaps an extra 0
                display_hours = (hours < 10) ? "+0" + hours : "+" + hours;
            } else {
                // add an extra 0 if needed
                display_hours = (hours > -10) ? "-0" + Math.abs(hours) : hours;
            }
            mins = (mins < 10) ? "0" + mins : mins;
            return display_hours + ":" + mins;
        }
        // Adding the function to onload event of document object
        onload = calculate_time_zone;
</script>

我推荐你通过这个链接

,看看这个也是时间检测