在 Kotlin 中为 API 级别小于或等于 16 创建 Date 对象

2024-04-01

这听起来可能非常有趣和基本,但我正在努力通过将纪元到它的秒数传递给 Kotlin 来创建 DateTime 类型的对象。

我得到的示例要么是需要 API 级别 26 的库,要么只是讨论从 DD-MM-YYYY 字符串到其他字符串的格式转换。

到目前为止,我已经尝试过“LocalDateTime”、“Timestamp”、“Date”,但 Kotlin 要么拒绝识别它们,要么不同意函数参数,或者无法解决命名空间冲突。或者这些示例是 Java 的,它在 Kotlin 中不起作用或者在 Kotlin 中没有等效项。

使用 Date() 我收到错误“无法访问 '':它在 Date() 中是私有的”

使用 LocalDate、LocalDateTime,我收到 API 级别错误

使用时间戳时,我收到错误“无法使用提供的参数调用以下函数”。我将 Long 作为文档中提到的参数传递。但它期待“包裹”或“日期”。

有人可以帮忙吗?


Update:在最新版本的 Android 工具中,API脱糖为旧版本的 Android 带来了大部分功能java.timeAndroid 26 及更高版本中内置的功能。


tl;dr

  • Use java.time类。
    切勿使用Date, Calendar, or SimpleDateFormat.
  • Add the 三十ABP https://github.com/JakeWharton/ThreeTenABP库到您的项目。
  • See 如何在Android项目中使用ThreeTenABP https://stackoverflow.com/q/38922754/642706.

避免遗留日期时间类

遗留类如Date & Calendar are terrible,由不了解日期时间处理的人创建。这些课程多年前就被现代课程所取代java.timeJSR 310 中定义的类。

java.time

The Instant https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html#ofInstant-java.time.LocalDateTime-java.time.ZoneOffset-java.time.ZoneId-类取代了Date类,两者都代表 UTC 中的一个时刻(零小时-分钟-秒的偏移量)。

Instant instant = Instant.now() ;  // Capture the current moment in UTC.

The Calendar类,或者更准确地说,它最常用的具体子类GregorianCalendar https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/GregorianCalendar.html被替换为ZonedDateTime https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html.

ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;  // Capture the current moment as seen in the wall-clock time used by the people of a particular region (a time zone). 

Convert

最好完全避免遗留的日期时间类。但有时您可能需要与尚未更新的旧代码进行互操作java.time。在这种情况下,转换。期待新的to…/from…添加到旧类的转换方法。

Calendar calendar = GregorianCalendar.from( zdt ) ;

…and…

ZonedDateTime zdt = ( ( GregorianCalendar ) calendar ).toZonedDateTime() ;

后端口

The java.time类内置于 Java 8 及更高版本以及 Android 26 及更高版本中。

对于 Java 6 和 7,请使用在三十后端口 https://www.threeten.org/threetenbp/项目。大部分的java.time在那里找到功能。该项目由同一个人领导java.time项目和 JSR 310,史蒂芬·科尔伯恩 https://stackoverflow.com/users/38896/jodastephen.

对于 26 之前的 Android,请使用该向后移植到 Android 的适配,三十ABP https://github.com/JakeWharton/ThreeTenABP项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Kotlin 中为 API 级别小于或等于 16 创建 Date 对象 的相关文章

  • Android - 从资产中解析巨大(超大)JSON 文件的最佳方法

    我正在尝试从资产文件夹中解析一些巨大的 JSON 文件 我如何加载并添加到 RecyclerView 我想知道解析这种大文件 大约 6MB 的最佳方法是什么 以及您是否知道可以帮助我处理此文件的良好 API 我建议您使用GSON lib h
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • 使用 JavaScript 比较两个日期未按预期工作[重复]

    这个问题在这里已经有答案了 这是我的 JavaScript 代码 var prevDate new Date 1 25 2011 the string contains a date which comes from a server si
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 无法访问 com.google.android.gms.internal.zzbfm 的 zzbfm 类文件未找到

    我正在将我的 Android 应用程序项目从GCM to FCM 为此 我使用 Android Studio 中的 Firebase 助手工具 并遵循 Google 开发人员指南中的说明 一切都很顺利 并将我的应用程序代码更改为FCM根据助
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • 在 SQLite 中搜索时排除 HTML 标签和一些 UNICODE 字符

    更新 4 我已经成功运行了firstchar例如 但现在的问题是使用regex 即使包含头文件 它也无法识别regex操作员 有什么线索可以解决这个问题吗 更新 2 我已经编译了sqlite3我的项目中的库 我现在正在寻找任何人帮助我为我的
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 错误:在根项目“projectName”中找不到项目“app”

    我有一个在 Eclipse 中开发的旧应用程序 现在尝试将其迁移到 Android Studio 我更新了库并遵循了基本步骤 现在 我收到此错误 Error Project app not found in root project pro
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 在 Managed Burn BootstrapperApplication 中包含映像

    我正在使用 Burn 和自定义引导程序应用程序使用 wix 开发安装程序 一切正常 但我无法将简单的图像包含到我的应用程序 UI 中 我将图像包含到我的用户界面中 如下所示
  • 从支付网关重定向后丢失用户 cookie 和会话数据

    我正在将 ASP net MVC5 用于我的电子商务项目 我没有使用任何 SSL 我也成功集成了支付网关 我面临的问题是 当我将数据发布到支付网关时 它会处理付款并将响应发送回我们的 Web 应用程序操作方法 用户会被注销 即 User i
  • py2exe 与 matplotlib、numpy 和 pylab

    我正在尝试生成一个可执行文件 我正在使用的软件包是 import sys import matplotlib pyplot as plt from pylab import from numpy import setup py 如下 fro
  • .Net Core Api - 基于请求值的自定义 JSON 解析器

    我希望拥有一切OkObjectResult来自我的 api 的响应通过我拥有的自定义 JSON 解析器运行 解析器依赖于一些特定于请求的数据 即用户的角色 它实际上类似于控制器上的 Authorize 属性 但用于从 API 传递到 UI
  • 如何在angularjs中从模板html调用指令

    Html 在这个 html 模板文件中 我必
  • 如何在 numba 中调用 `@guvectorize` 内的 `@guvectorize`?

    我正在尝试打电话 guvectorize里面一个 guvectorize但我有一个错误说 Untyped global name regNL nb cannot determine Numba type of
  • .htaccess r=301 与 r=302

    我正在我的 htaccess 中为移动设备或坏页面等创建规则 我正在使用这些规则 rewriterules badpage goodpage html r 302 rewriterules iphone iphone html r 301
  • 具有动态测试数量的 JUnit 测试

    在我们的项目中我有几个JUnit http www junit org 测试例如从目录中取出每个文件并对其运行测试 如果我实施一个testEveryFileInDirectory方法中的TestCase这显示为只有一项可能失败或成功的测试
  • Gradle 将下载的 jar 存储在本地文件系统的什么位置

    Gradle如何将下载的jar文件存储在本地文件系统上 Maven 将它们存储在 m2目录下USER HOME 但是 Gradle 将它们存储在哪里 我检查了 gradle文件夹那里 但只看到编译的脚本 在 Mac Linux 和 Wind
  • 使用可变数量参数的动态调用中的受控异常处理

    In a 昨天的话题已解决 https stackoverflow com questions 9726032 puzzle involving unwound stacks on dynamic invoke 9750323 hvd 向我
  • C 中取消引用和括号引用的操作顺序

    If I do ptr x 这相当于 ptr x or ptr x ptr x See the 维基百科运算符优先级表 http en wikipedia org wiki Order of operations Programming l
  • 为 Django 查询强制使用 INNER JOIN

    这是我的架构 城市 gt 摄影师 我正在尝试获取至少拥有一名摄影师的城市列表 并返回这些城市的摄影师数量 这是我正在使用的查询集 City objects annotate photographer count aggregates Cou
  • User.config是如何创建以及如何使用的

    我开始阅读有关配置文件的内容 并阅读有关 user config 的内容 谷歌搜索了一下 但找不到它是如何创建以及如何使用的 另请注意 将为每个用户创建一个单独的 user config 甚至阅读 StackOverflow 中的问题 但它
  • iOS10应用关闭时如何响应本地通知?

    当应用程序完全关闭 不在后台 时如何响应本地通知 当应用程序在后台或前台运行时 一切正常 但是当应用程序关闭并且我试图回复通知时 仅 application didFinishLaunchingWithOptions 被呼叫 userNot
  • python中带注释的双向条形图plotly

    我有一个带有玩具版本的 pandas 数据集 可以用它创建 creating a toy pandas dataframe s1 pd Series dont have a mortgage 31 8 have mortgage 15 65
  • 从 Boost 多索引迭代器获取数字索引

    我正在存储以下一堆内容 struct Article std string title unsigned db id id field in MediaWiki database dump 在 Boost MultiIndex 容器中 定义
  • 如何将图像旁边的文本垂直居中

    无论我做什么 我都无法使镜头在图像旁边垂直居中 有什么想法吗 我已经搜索过但没有结果 任何帮助将不胜感激 谢谢 您可能需要扩大结果窗口才能看到我在说什么 FIDDLE http jsfiddle net mbM7C 4 HTML div c
  • 使用 Twilio 发送群组消息

    有没有办法使用 twilio 向群组线程发送消息 我不希望每个收件人都有一个单独的线程 其中包含发送消息的 twilio 号码 感谢您的任何建议 来自 Twilio 的 Ricky 在这里 您无法按照您所描述的方式进行设置 但我们确实有一篇
  • 如何在 IIS 10 上配置缓存?

    我有一个网站 并且启用了缓存 如下所示 为服务器启用缓存 为我正在测试的网站启用缓存 在响应标头中 我将整个网站的网页内容过期时间设置为 30 天 没有针对任何特定文件夹的设置 为文件 css js png woff2 启用缓存 在 Chr
  • 在 Kotlin 中为 API 级别小于或等于 16 创建 Date 对象

    这听起来可能非常有趣和基本 但我正在努力通过将纪元到它的秒数传递给 Kotlin 来创建 DateTime 类型的对象 我得到的示例要么是需要 API 级别 26 的库 要么只是讨论从 DD MM YYYY 字符串到其他字符串的格式转换 到