- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
任何人都可以建议我有什么方法可以检测英国、德国和法国的国家明智时间。我不确定,但我们能否从 datetime UTC 时间中提取国家/地区时间 DateTime.UtcNow
?
请告诉我,因为我处于用户可以从任何国家/地区登录我们的网站的情况,我需要根据他所在国家/地区的当前时间在下拉列表中显示时间。
另一个人这样做了,但我不确定我是否应该遵循他的方法。这是网址
http://www.c-sharpcorner.com/Blogs/7096/
private string GetCountryTime(string country)
{
DateTime gmt = default(DateTime);
System.DateTime value = default(System.DateTime);
gmt = DateTime.Now.AddMinutes(-330);
switch (country)
{
case "India":
case "Sri Lanka":
return DateTime.Now.ToString();
case "United Kingdom":
case "Portugal":
case "Sierra Leone":
case "Senegal":
case "Morocco":
case "Mali":
return gmt.ToString();
case "France":
case "Spain":
case "Slovenia":
case "Slovakia":
case "Poland":
case "Nigeria":
case "Niger":
case "Hungary":
case "Denmark":
case "Czech Republic":
return gmt.AddMinutes(60).ToString();
case "Botswana":
case "Moldova":
case "South Africa":
case "Malawi":
case "Lithuania":
case "Libya":
case "Turkey":
case "Finland":
case "Egypt":
return gmt.AddMinutes(120).ToString(); ;
case "Bahrain":
case "Somalia":
case "Saudi Arabia":
case "Russia":
case "Qatar":
case "Sudan":
case "Madagascar":
case "Iraq":
return gmt.AddMinutes(180).ToString();
case "Iran":
return gmt.AddMinutes(220).ToString();
case "Armenia":
case "Seychelles":
case "Reunion":
case "Oman":
case "Mauritius":
case "United Arab Emirates":
case "Georgia":
case "Azerbaijan":
return gmt.AddMinutes(240).ToString();
case "Afghanistan":
return gmt.AddMinutes(270).ToString();
case "Pakistan":
case "Maldives":
case "Kyrgyzstan":
return gmt.AddMinutes(300).ToString();
case "Nepal":
return gmt.AddMinutes(345).ToString();
case "Bangladesh":
case "Kazakhstan":
return gmt.AddMinutes(360).ToString();
case "Myanmar":
return gmt.AddMinutes(390).ToString();
case "Cambodia":
case "Laos":
return gmt.AddMinutes(420).ToString();
case "Philippines":
case "Malaysia":
case "Hong Kong":
case "China":
return gmt.AddMinutes(480).ToString();
case "Japan":
case "Korea":
return gmt.AddMinutes(540).ToString();
case "Micronesia":
return gmt.AddMinutes(720).ToString();
case "Papua New Guinea":
case "Australia":
return gmt.AddMinutes(600).ToString();
case "New Caledonia":
return gmt.AddMinutes(660).ToString();
case "New Zealand":
case "Fiji":
return gmt.AddMinutes(720).ToString();
case "Argentina":
case "Brazil":
return gmt.AddMinutes(-180).ToString();
case "Cuba":
return gmt.AddMinutes(-300).ToString();
case "Aruba":
case "Paraguay":
case "Netherlands Antilles":
case "Barbados":
case "Chile":
case "Dominican Republic":
case "Guyana":
return gmt.AddMinutes(-240).ToString();
case "Bahamas":
return gmt.AddMinutes(-240).ToString();
case "Peru":
case "Panama":
case "Jamaica":
case "Haiti":
case "Colombia":
case "Canary Islands":
return gmt.AddMinutes(-300).ToString();
case "Bhutan":
return gmt.AddMinutes(360).ToString();
case "Belize":
case "Mexico":
case "Honduras":
case "Canada":
return gmt.AddMinutes(-360).ToString();
case "Nicaragua":
return gmt.AddMinutes(-300).ToString();
case "United States Of America":
return gmt.AddMinutes(-480).ToString();
case "French Polynesia":
return gmt.AddMinutes(720).ToString();
case "Samoa":
return gmt.AddMinutes(-660).ToString();
case "Singapore":
return gmt.AddMinutes(480).ToString();
case "Slovak Republic":
return gmt.AddMinutes(60).ToString();
case "Solomon Islands":
return gmt.AddMinutes(660).ToString();
case "St Helena":
return gmt.AddMinutes(0).ToString();
case "St Kitts & Nevia":
return gmt.AddMinutes(-240).ToString();
case "St Lucia":
return gmt.AddMinutes(-240).ToString();
case "Surinam":
return gmt.AddMinutes(-180).ToString();
case "Swaziland":
return gmt.AddMinutes(120).ToString();
case "Sweden":
return gmt.AddMinutes(60).ToString();
case "Switzerland":
return gmt.AddMinutes(60).ToString();
case "Syria":
return gmt.AddMinutes(120).ToString();
case "Taiwan":
return gmt.AddMinutes(480).ToString();
case "Tajikistan":
return gmt.AddMinutes(300).ToString();
case "Tanzania":
return gmt.AddMinutes(180).ToString();
case "Thailand":
return gmt.AddMinutes(420).ToString();
case "Tonga":
return gmt.AddMinutes(0).ToString();
case "Trinidad & Tobago":
return gmt.AddMinutes(-240).ToString();
case "Tunisia":
return gmt.AddMinutes(60).ToString();
case "Turkmenistan":
return gmt.AddMinutes(300).ToString();
case "Turks & Caicos Islands":
return gmt.AddMinutes(-240).ToString();
case "Tuvalu":
return gmt.AddMinutes(720).ToString();
case "Uganda":
return gmt.AddMinutes(180).ToString();
case "Ukraine":
return gmt.AddMinutes(120).ToString();
case "Uruguay":
return gmt.AddMinutes(-180).ToString();
case "USA":
return gmt.AddMinutes(-480).ToString();
case "Uzbekistan":
return gmt.AddMinutes(300).ToString();
case "Vanuatu":
return gmt.AddMinutes(660).ToString();
case "Venezuela":
return gmt.AddMinutes(-240).ToString();
case "Vietnam":
return gmt.AddMinutes(420).ToString();
case "Wallis & Futuna Islands":
return gmt.AddMinutes(720).ToString();
case "Yemen":
return gmt.AddMinutes(180).ToString();
case "Zambia":
return gmt.AddMinutes(120).ToString();
case "Zimbabwe":
return gmt.AddMinutes(120).ToString();
default:
return "";
}
}
$(function(){
setTimezoneCookie();
});
function setTimezoneCookie(){
var timezone_cookie = "timezoneoffset";
// if the timezone cookie not exists create one.
if (!$.cookie(timezone_cookie)) {
// check if the browser supports cookie
var test_cookie = 'test cookie';
$.cookie(test_cookie, true);
// browser supports cookie
if ($.cookie(test_cookie)) {
// delete the test cookie
$.cookie(test_cookie, null);
// create a new cookie
$.cookie(timezone_cookie, new Date().getTimezoneOffset());
// re-load the page
location.reload();
}
}
// if the current timezone and the one stored in cookie are different
// then store the new timezone in the cookie and refresh the page.
else {
var storedOffset = parseInt($.cookie(timezone_cookie));
var currentOffset = new Date().getTimezoneOffset();
// user may have changed the timezone
if (storedOffset !== currentOffset) {
$.cookie(timezone_cookie, new Date().getTimezoneOffset());
location.reload();
}
}
}
server side code
--------------------
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Request.Cookies.AllKeys.Contains("timezoneoffset"))
{
Session["timezoneoffset"] =
HttpContext.Request.Cookies["timezoneoffset"].Value;
}
base.OnActionExecuting(filterContext);
}
}
public static string ToClientTime(this DateTime dt)
{
// read the value from session
var timeOffSet = HttpContext.Current.Session["timezoneoffset"];
if (timeOffSet != null)
{
var offset = int.Parse(timeOffSet.ToString());
dt = dt.AddMinutes(-1 * offset);
return dt.ToString();
}
// if there is no offset in session return the datetime in server timezone
return dt.ToLocalTime().ToString();
}
function getTimezoneName() {
tmSummer = new Date(Date.UTC(2005, 6, 30, 0, 0, 0, 0));
so = -1 * tmSummer.getTimezoneOffset();
tmWinter = new Date(Date.UTC(2005, 12, 30, 0, 0, 0, 0));
wo = -1 * tmWinter.getTimezoneOffset();
if (-660 == so && -660 == wo) return 'Pacific/Midway';
if (-600 == so && -600 == wo) return 'Pacific/Tahiti';
if (-570 == so && -570 == wo) return 'Pacific/Marquesas';
if (-540 == so && -600 == wo) return 'America/Adak';
if (-540 == so && -540 == wo) return 'Pacific/Gambier';
if (-480 == so && -540 == wo) return 'US/Alaska';
if (-480 == so && -480 == wo) return 'Pacific/Pitcairn';
if (-420 == so && -480 == wo) return 'US/Pacific';
if (-420 == so && -420 == wo) return 'US/Arizona';
if (-360 == so && -420 == wo) return 'US/Mountain';
if (-360 == so && -360 == wo) return 'America/Guatemala';
if (-360 == so && -300 == wo) return 'Pacific/Easter';
if (-300 == so && -360 == wo) return 'US/Central';
if (-300 == so && -300 == wo) return 'America/Bogota';
if (-240 == so && -300 == wo) return 'US/Eastern';
if (-240 == so && -240 == wo) return 'America/Caracas';
if (-240 == so && -180 == wo) return 'America/Santiago';
if (-180 == so && -240 == wo) return 'Canada/Atlantic';
if (-180 == so && -180 == wo) return 'America/Montevideo';
if (-180 == so && -120 == wo) return 'America/Sao_Paulo';
if (-150 == so && -210 == wo) return 'America/St_Johns';
if (-120 == so && -180 == wo) return 'America/Godthab';
if (-120 == so && -120 == wo) return 'America/Noronha';
if (-60 == so && -60 == wo) return 'Atlantic/Cape_Verde';
if (0 == so && -60 == wo) return 'Atlantic/Azores';
if (0 == so && 0 == wo) return 'Africa/Casablanca';
if (60 == so && 0 == wo) return 'Europe/London';
if (60 == so && 60 == wo) return 'Africa/Algiers';
if (60 == so && 120 == wo) return 'Africa/Windhoek';
if (120 == so && 60 == wo) return 'Europe/Amsterdam';
if (120 == so && 120 == wo) return 'Africa/Harare';
if (180 == so && 120 == wo) return 'Europe/Athens';
if (180 == so && 180 == wo) return 'Africa/Nairobi';
if (240 == so && 180 == wo) return 'Europe/Moscow';
if (240 == so && 240 == wo) return 'Asia/Dubai';
if (270 == so && 210 == wo) return 'Asia/Tehran';
if (270 == so && 270 == wo) return 'Asia/Kabul';
if (300 == so && 240 == wo) return 'Asia/Baku';
if (300 == so && 300 == wo) return 'Asia/Karachi';
if (330 == so && 330 == wo) return 'Asia/Calcutta';
if (345 == so && 345 == wo) return 'Asia/Katmandu';
if (360 == so && 300 == wo) return 'Asia/Yekaterinburg';
if (360 == so && 360 == wo) return 'Asia/Colombo';
if (390 == so && 390 == wo) return 'Asia/Rangoon';
if (420 == so && 360 == wo) return 'Asia/Almaty';
if (420 == so && 420 == wo) return 'Asia/Bangkok';
if (480 == so && 420 == wo) return 'Asia/Krasnoyarsk';
if (480 == so && 480 == wo) return 'Australia/Perth';
if (540 == so && 480 == wo) return 'Asia/Irkutsk';
if (540 == so && 540 == wo) return 'Asia/Tokyo';
if (570 == so && 570 == wo) return 'Australia/Darwin';
if (570 == so && 630 == wo) return 'Australia/Adelaide';
if (600 == so && 540 == wo) return 'Asia/Yakutsk';
if (600 == so && 600 == wo) return 'Australia/Brisbane';
if (600 == so && 660 == wo) return 'Australia/Sydney';
if (630 == so && 660 == wo) return 'Australia/Lord_Howe';
if (660 == so && 600 == wo) return 'Asia/Vladivostok';
if (660 == so && 660 == wo) return 'Pacific/Guadalcanal';
if (690 == so && 690 == wo) return 'Pacific/Norfolk';
if (720 == so && 660 == wo) return 'Asia/Magadan';
if (720 == so && 720 == wo) return 'Pacific/Fiji';
if (720 == so && 780 == wo) return 'Pacific/Auckland';
if (765 == so && 825 == wo) return 'Pacific/Chatham';
if (780 == so && 780 == wo) return 'Pacific/Enderbury'
if (840 == so && 840 == wo) return 'Pacific/Kiritimati';
return 'US/Pacific';
}
最佳答案
不要遵循该代码。这是可怕的代码,比我现在有时间研究的方式更多。
基本上,您需要获取用户所在的时区——这可能需要的不仅仅是国家,因为几个国家跨越多个时区。
如果你想坚持“ Vanilla ”.NET,你可以使用 TimeZoneInfo
- 您需要知道用户时区的 ID,此时您可以使用:
var zone = TimeZoneInfo.FindSystemTimeZoneById(zoneId);
var now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, zone);
// zoneId is the TZDB ID, e.g. "Europe/London"
DateTimeZone zone = DateTimeZoneProviders.Tzdb[zoneId];
// clock would be an IClock implementation of some description; rather than
// having a static method, an interface encourages testability.
ZonedDateTime now = clock.Now.InZone(zone);
DateTime
或
ZonedDateTime
如果您需要一个字符串 - 您使用的格式很可能是用户特定的。在这两种情况下,您还需要计算出用户的时区,这远非简单。在不知道您正在构建什么样的应用程序的情况下,很难就这方面的事情给您建议。
关于c# - 如何从用户 pc TimeZone 中提取当前日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25379517/
我的数据库中有两张表,一张用于 field ,另一张用于预订。我需要的是一个查询来选择所有未预订的 field 。见下文: 餐 table 预订具有以下字段: bk_id venue_id 作为(预订
嗨,我是编码新手,我有一些培训项目,其中包括从 HTML 表单输入 MySQL 数据库。它就像你玩过的游戏的日志。第一个日期输入是您开始游戏的时间,第二个日期输入是您完成游戏的时间。但我需要检查器或类
我是这个 sql 编码的新手,我正在尝试学习新的东西。因此,我创建了一个交货表,其中包含一些属性,如商品代码、交货日期、交货数量。所以如何从同一张表中获取第一个交货日期(最小日期)和交货数量以及最晚交
我从支付网关返回了这个日期 2014-05-15T08:40:52+01:00 我得到 2014-05-15T08:40:52 但我无法识别时区 +01:00 的含义 我的位置时区是 UTC−06:0
我快要疯了,请帮忙。 我有一列包含日期时间值。 我需要找到每天的最小值和最大值。 数据看起来像这样 2012-11-23 05:49:26.000 2012-11-23 07:55:43.000
我从 json 数据中获取日期为 2015 年 4 月 15 日晚上 10:15我只想在 html 页面中显示 json 响应数据的时间,例如 10:15 PM这里我放了我的js函数和html代码 J
是否有 javascript 库或其他机制允许我将 .NET 日期/时间格式字符串(即 yyyy-MM-dd HH:mm:ss)传递给 javascript函数并让它相应地解析提供的日期时间值?我一直
我正在使用以下代码以正确的格式获取当前的 UTC 时间,但客户返回并要求时间戳现在使用 EST 而不是 UTC。我搜索了 Google 和 stackoverflow,但找不到适用于我现有代码的答案。
我有以下日期的平均温度数据。我想找到连续至少 5 天低于或高于 0 摄氏度的开始日期。 date_short mean.temp 1 2018-05-18 17.54 2 2018-05-19
它可以在其他网络浏览器中使用,但 IE11 返回无效日期。 为了调试我使用了下面的代码。 console.log('before - ' + date.value); date.value = new
我在 Excel 中有一个数据的 Web 提取,其中日期列带有/Date(1388624400000)/。我需要在 Excel 中将其转换为日期。 最佳答案 能够从 here 中推断出它. 假设字符串
嗨,我的 Schmema 有一个带有 ISO 日期的字段: ISODate("2015-04-30T14:47:46.501Z") Paypal 在成功付款后以该形式返回日期对象: Time/Date
我的 table : CREATE TABLE `tbdata` ( `ID` INT(10) NOT NULL AUTO_INCREMENT, `PatientID` INT(10) NOT
我正在 Ubuntu 服务器 12.04 中编写一个 shell 脚本,它应该比较日志文件中的一些数据。在日志文件中,日期以以下格式给出: [Mon Apr 08 15:02:54 2013] 如您所
我想使用 GROUP BY WITH ROLLUP 创建一个表并获取总行数而不是 null。 $sql ="SELECT IF(YEAR(transaktioner.datum
我正在创建博客文章,在成功迁移我的博客文件后,当我转到我网站的博客页面时返回一个错误(无法解析其余部分:':“Ymd”'来自'post.date|date: "Ymd"') 我似乎无法确定这是语法错误
我正在尝试获取要插入到 CAML 查询中的月份范围,即:2010-09-01 和 2010-09-30。 我使用以下代码生成这两个值: var month = "10/2010"; var month
如何将代码document.write("直到指定日期")更改为writeMessage(date)中的日期?此外,writeMessage(date) 中的日期未正确显示(仅显示年份)。感谢您帮助解
我在 Windows (XP) 和 Linux 上都尝试过 utime()。在 Windows 上我得到一个 EACCES 错误,在 Linux 上我没有得到任何错误(但时间没有改变)。我的 utim
我正在尝试计算发生在同一日期的值的总和(在 XYZmin 中)。 我的数据看起来像这样, bar <- structure(list(date = structure(c(15622, 15622,
我是一名优秀的程序员,十分优秀!