c# - 使用 Noda Time 获取给定偏移量的时区列表(以分钟为单位)
问题描述
我正在尝试使用 Noda Time 设计以下时区解决方案:
用户将使用移动应用程序或 Web 应用程序登录系统。在登录时,将使用与 UTC 的偏移量(比如说 x 分钟)作为参数调用 Web API。
现在,如果偏移量(x 分钟)与保存在数据库中的偏移量(和时区)不同,那么将向用户显示距离 UTC x 分钟的时区列表,以便他们可以从中选择一个。然后,选定的时区和相应的偏移量(x 分钟)将作为用户的最新时区保存在数据库中。
如何使用 Noda Time 获取距离 UTC x 分钟的时区列表?
例如,如果用户距 UTC +330 分钟,那么用户将收到以下提示:
我们发现您比格林威治标准时间早 5 小时 30 分钟。请选择您当前的时区:“亚洲/科伦坡”、“亚洲/加尔各答”
解决方案
你可以这样做:
TimeZoneInfo.GetSystemTimeZones()
.Where(x => x.GetUtcOffset(DateTime.Now).TotalMinutes == 330)
现在您有了一个时区集合!您可以根据您的情况替换DateTime.Now
为其他日期或日期。DateTimeOffset
在 Noda Time 中,您可以这样做:
using NodaTime;
using NodaTime.TimeZones;
TzdbDateTimeZoneSource.Default.GetIds()
.Select(x => TzdbDateTimeZoneSource.Default.ForId(x))
.Where(x =>
x.GetUtcOffset(SystemClock.Instance.GetCurrentInstant()).ToTimeSpan().TotalMinutes == 330)
推荐阅读
- string - vuetify v-select 显示长字符串
- javascript - 我们知道如何在 nodejs 中为单个时区创建 cron,但我想为多个时区实现
- javascript - 如何获取表的所有实例的数组结束其子组件 Node.js?
- c++ - 尝试通过openMP并行化DFS(递归)遍历
- scala - 每当我运行 Scala 对象时出现 scala.MatchError 消息
- c++ - 将 css 样式应用于 Gtk::ToolButton 不适用于 gtkmm 中的选择器
- python - 无法在pycharm中安装包
- javascript - 为什么我不能得到结果?
- java - 如何将 util java 类重用到其他空手道项目中?
- ruby - 在 Ruby 上递归查找层次结构中的目录路径