使用Collections.binarySearch()进行谓词搜索(即,不完全匹配)。
我有一个按升序排序的时间戳列表: List timestamps = ...; // note: sorted in ascending order 现在,给定一个输入时间戳Instant inputTs,我想在timestamps中找到一个满足t.isBefore(inputTs) && inputTs.isBefore(t.plusMillis(SOME_CONSTANT))的条目t,即,我只是在寻找t,以便inputTs在从t开始的一些固定长度持续时间的边界.我承认理论上可以有多个这样的t s,因此允许搜索在这些 之间任意选择. Collections.binarySearch(...)过载期望钥匙,表明常见/预期的用户酶是搜索"完整匹配"/相同的条目(缺乏更好的词,对不起).但是,在我的情况下,inputTs将是timestamps中存在的条目的不同,因为inputTs有望在timestamps中进行t> t后不久是一个时间点. 我的想法
14 2024-03-30
编程技术问答社区
将DayOfWeek集合中的元素旋转成本地定义的顺序
鉴于我们可以用 Locale : DayOfWeek firstDayOfWeek = WeekFields.of( Locale.US ).getFirstDayOfWeek() ; // Sunday-Saturday. …并且鉴于Java带有一个内置的枚举,定义了一周中的日子, dayofweek : DayOfWeek[] dows = DayOfWeek.values() ; // Monday-Sunday 如何创建另一个数组或其元素是DayOfWeek枚举对象的列表,按照我们指定的环境定义的顺序? 目的是按以特定Locale代表的文化规范定义的顺序表示一周的所有七天. . 解决方案 tl; dr Collections.rotate( new ArrayList ( List.of( DayOfWeek.values() ) ) , // Actually, you would instantiate elsewh
10 2024-03-06
编程技术问答社区
如何获得基于两个时间段的时间槽间隔为1小时的安卓系统
如何获得基于1小时的时间插槽间隔两倍Androidi希望将时间插槽存储在arraylist中.我有时间和结束时间.基于开始时间,它应该创建时间插槽. 例如,如果开始时间为09:00 AM,并且结束时间为21:00 pm,则应将其添加到如下 的arraylist中 上午09:00 10:00 AM 11:00 AM 12:00 PM 13:00 pm 14:00 pm ..... 很快 21:00 pm 解决方案 您可以这样做: String firstDate = "26/02/2019"; String firstTime = "00:00 AM"; String secondDate = "26/02/2019"; String secondTime = "12:00 PM"; String format = "dd/MM/yyyy hh:mm a"; SimpleDateFormat sdf = new SimpleDateFormat(format);
8 2024-03-04
编程技术问答社区
在JavaFX'的DatePicker中设置一周的第一天
在应用阿拉伯语语言环境时,是否可以在Javafx的datepicker上更改一周的第一天?我需要从星期六到周日更改它. 解决方案 我能够通过在我的应用程序中注入以下类来更改本周的第一个日期: package sun.util.resources.ar; import sun.util.resources.LocaleNamesBundle; public final class CalendarData_ar_SA extends LocaleNamesBundle { protected final Object[][] getContents() { return new Object[][] { { "firstDayOfWeek", "1" }, { "minimalDaysInFirstWeek", "1" } }; } } 不要忘记更改默认场所: public static final Locale SAUD
6 2024-03-03
编程技术问答社区
为什么Duration类没有'toSeconds()'方法?
我正在看持续时间 Java 8中的课程,并注意到它没有: long toSeconds(); ,但它具有所有其他toXXXXX()可以获得几天,小时,分钟,米利斯,纳米.我确实看到了一个getSeconds()方法,该方法返回此持续时间对象内的秒数.还有一种get(TemporalUnit unit)方法可以将持续时间作为请求的时间单元.但是,为什么不保留toSeconds()的一致性呢? 解决方案 让我们看一下 docs 说: 此类以秒和纳秒为单位对数量或时间进行建模. 基本上意味着用于存储代表时间的单元为秒.例如,存储持续时间为5分钟,10纳秒,300(秒)和10(纳秒).因此,无需将转换为秒.您获取使用getSeconds()的秒数. 明白我的意思吗?所有其他方法将转换为相应的单元:天,分钟,小时...这就是为什么它们以to开始,含义convertedTo.由于您不需要进行转换即可在几秒钟内完成持续时间,因此返回持续时间的方法以get>. 开始
8 2024-03-02
编程技术问答社区
如何在spark-scala数据框架中获取当前本地时间或系统时间?
我试图在Spark-Scala中获得当地时间,但它正在返回UTC. 我正在使用java.time.localdatetime获取当前的时间戳.但是它返回UTC标准. java.sql.Timestamp.valueOf(DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss.SSSSSS").format(LocalDateTime.now)) LocalDateTime在Spark Shell中返回本地时间,但在我的代码中,它给出了UTC标准. val time: LocalDateTime = LocalDateTime.now 如何获得当前时间? 当前输出是UTC.我需要当地时间. 我需要更改区域. 解决方案 我知道的最好方法是根据您的时区使用GMT偏移量. 获取GMT偏移并更换.在此示例中,我的GMT偏移量为-5.让我知道它是否有帮助. 让我知道他是否解决了问题. df=spark.sql("
14 2024-03-01
编程技术问答社区
在android studio中无法解决符号'java.time.LocalDate'错误。
我试图在我的Android应用中使用Java.Time.Localdate,但是如果我尝试导入它,则来自Java的任何类.Time给出了Android Studio 1.1 中无法解析符号错误 我能弄清楚的唯一原因是它不支持Java 8.真的是这样吗? 解决方案 Android API级别26 Android API级别26获得了 java.Time 的实现" noreferrer"> LocalDate 类. 早期Android 对于Android threeten-backport 是java的大部分功能的后端,java 6 &7. threetenabp 将Threeten-backports适应Android. joda time 通常在Android项目中使用. Joda Time在Java 8中启发了Java.Time套件,但它们不是替换. Joda Time团队建议迁移到Java.Time. 关于 java.time ja
14 2024-02-18
编程技术问答社区
原因是:java.time.format.DateTimeParseException: 文本'11 2 AM'无法在索引3处被解析。
我想在HH:MM:一种格式中解析时间.但是,当我将字符串传递给HH:m:一种格式时,会产生错误Java.Time.format.dateTimeParseException:at Index 3. 例如: - 当我像上午11:15一样通过字符串时,一切都很好.但是当我在上午11:2通过时.它说文本'11 2 am'不能在索引3上解析. 这是我的Java代码: - String time = result.get(0); time = time.replace("a.m", "AM"); time = time.replace("p.m", "PM"); time = time.substring(0, time.length() - 1); mTimebtn.setText(time); if (time.contains("AM")) { DateTimeFormatter dtfParse1 = DateTimeFormatter.ofPattern("hh
6 2024-02-12
编程技术问答社区
如何在java中比较两个时间?
我正在开发一个用于同步联系人的应用程序. 每个联系人都有一个update_time字段. 我想比较 当前update_time 上一个update_time . 我的问题是我将此时间存储在我的数据库中. . 1.如何将此字符串转换为时间?和 2.如何比较两次? 2014-07-11 15:10:55 这是我的时间格式. 欢迎任何帮助或评论.谢谢您的宝贵答案. 解决方案 (您可能需要考虑将数据库中的值存储为整数而不是文本.这里有利弊,所以我只是将其作为一个想法,与您的实际问题有些不同.) 如果您乐于解析java.util.Date: ,解析非常容易 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US); 指定美国语言环境可以阻止任何东西受到设备的默认环境的影响. (因为这些只是数字,所以无论如何它的可能性都较小 - 但是可以想象它可以
24 2024-02-12
编程技术问答社区
如何与Android上的日期正确合作
我正在与Kotlin一起从事Android项目,我们需要在设备和后端对日期进行验证.到目前为止,我们一直在使用日期类,以代表日期,简单的formant类,以解析字符串和格式日期以及日历类,以在日期执行操作,例如从x天开始的日期以及类似的内容.我来了一些资源,表明与日期合作的正确方法是使用Java.Time软件包(例如LocalDateTime,Localtime等类).我有兴趣确切地知道应采用日期(从解析到格式)以及是否需要考虑时区的正确方法.我看过类似的问题,但是它们都没有真正总结我想知道的. 解决方案 正确的工作方式 与日期和时间正确地工作要求您了解一些日期和时间以及它们在用户的现实生活中的行为.正确工作不是要使用此或其他库类.根据您从事的工作,您将需要了解LEAP年和/或Julian,Gregorian和Proleptic Gregorian日历和/或许多不同的太阳能日历系统. 要与时间正确工作,几乎没有办法避免考虑时区.有关时区的介绍,我建议我链接到底部的视频
22 2024-02-10
编程技术问答社区
DateTimeFormatter抛出异常 "无法在索引0处进行解析"
我一直从运行此代码中遇到错误. java.time.format.dateTimeParseException:文本'Jan 03,2020'不能在索引0 上解析 final String myFormat = "LLL dd, yyyy"; //sets format in which to show date (same as how its saved in database) ex. Jan 29, 2020 final DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(myFormat); String startingBiWeeklyCheck = sharedPreferences.getString("biweekly start", "Jan 03, 2020"); LocalDate startingDate = LocalDate.parse(startin
16 2024-02-10
编程技术问答社区
ZoneddateTime.toinstant().toepochmilli()丢失区域数据
我使用的是在系统时区返回Date的truetime库.当转换为毫秒时,我会在将此Date转换为UTC日期时遇到问题. 这是我所做的: // getting true time in GMT [ex : 2020-07-13T18:00:57.192+03:00 [Europe/Istanbul]] Date now = getTrueNowTimeInGMT(); // I like to use `LocalDateTime`, so I am converting `Date` to `LocalDateTime`: LocalDateTime ldtOfSystem = LocalDateTime.ofInstant(now.toInstant(), ZoneId.systemDefault()); // Converting system default zone to UTC ZonedDateTime zdtOfSystem = ldtOfSystem.atZ
24 2024-02-06
编程技术问答社区
MaterialDatePicker在选择后返回不正确的日期
出于某些未知原因,选择后,材料返回了不正确的日期. 例如,用户在墨西哥地区,有时区:美国/蒂华纳.当他选择视觉表示:2021-10-05时,在结果文本中,我有-1天,2021-10-04.对于Ru地区,一切都很好.这是代码: public void startDateSelectionPicker() { try { MaterialDatePicker picker = MaterialDatePicker.Builder.datePicker() .setSelection(MaterialDatePicker.todayInUtcMilliseconds()) .setTheme(R.style.CustomDatePickerDialog) .build(); picker.addOnPositiveButtonClickLi
14 2024-02-04
编程技术问答社区
离某一日期的剩余天数不能正确显示
好吧,所以我创建了一个函数来显示以后日期的天数...这是正确的,直到几天超过9天的数量.如果超过几天,它似乎显示一个随机数几天...请参阅下面的代码: public String daysTillExpire() { String daysLeft = ""; int position = 0 ; String inputDateString = UIDM.get(position).date; Calendar calCurr = Calendar.getInstance(); Calendar day = Calendar.getInstance(); try { day.setTime(new SimpleDateFormat("dd-MM-yyyy").parse(inputDateString)); } catch (Pars
6 2024-02-01
编程技术问答社区
如何获得一个以毫秒为单位的格式化日期?
我有一个格式化的日期,从sqllite数据库中,要在图表视图中使用它,我需要以长数字进行格式化. 格式是: 2012-07-11 10:55:21 如何将其转换为毫秒? 解决方案 您可以使用此代码将字符串转换为日期对象: - Date d = DateFormat.parse(String s) ,然后使用内置方法将其转换为毫秒 long millisec = d.getTime(); 其他解决方案 使用date.getTime() SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss"); formatter.setLenient(false); String oldTime = "2012-07-11 10:55:21"; Date oldDate = formatter.parse(oldTime); long oldMillis
16 2024-01-29
编程技术问答社区
java.lang.NoClassDefFoundError。解析失败。Ljava/time/LocalDate;错误
我尝试了一切,但是错误无法解决 这是我的代码: public String[] getWeekDays() { LocalDate today = LocalDate.now(); LocalDate monday = today; LocalDate tue = today; LocalDate wed = today; LocalDate thur = today; LocalDate fri = today; LocalDate sat = today; LocalDate sunday = today; while (sunday.getDayOfWeek() != DayOfWeek.SUNDAY){ sunday = sunday.minusDays(1); } while (monday.getDayOfWeek() != DayOfWeek.MONDA
36 2024-01-29
编程技术问答社区
Kotlin Android/Java字符串日期时间格式,API21
我希望将字符串日期时间转换为格式化的字符串. 例如" 2018-12-14T09:55:00"至" 14.12.2018 09:55"作为字符串=> textview.text.text 如何使用kotlin或java进行Android? 解决方案 将其解析为LocalDateTime然后格式化: LocalDateTime localDateTime = LocalDateTime.parse("2018-12-14T09:55:00"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm"); String output = formatter.format(localDateTime); 如果这不适用于API21,则可以使用: SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH
24 2024-01-28
编程技术问答社区
如何将一个UTC偏移的数据格式字符串解析成由|符号分隔的结果日期
我有一个非常奇怪的问题,我想在哪里解析"2019-12-25T17:00:00-05:00" 这样它应该给我结果DEC 12 | Thursday | 5:00pm 我使用DateTimeFormatter和LocalDate 尝试了以下代码 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssz", Locale.US); DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM d | E | hh:mm a", Locale.US); LocalDate date = LocalDate.parse("2019-12-25T17:00:00-05:00", inputFormatter);
8 2024-01-28
编程技术问答社区
DateTimeFormatter在Android版本低于8的情况下无法工作
我想从另一个时间字符串中减去30分钟,但是我在0.5,0.6,0.7(Lollipop,Marshmallow,Nothing)等较低版本上遇到此错误 错误如下: java.lang.noclassdeffounderror:失败的分辨率:ljava/time/time/format/dateTimeFormatter; 解决方案 i 解决了在模块级别build.gradle文件 中添加这些行, 这是由于Java的原因而发生的. 只需添加以下线条 android { defaultConfig { // Required when setting minSdkVersion to 20 or lower multiDexEnabled true } compileOptions { // Flag to enable support for the new language APIs
20 2024-01-28
编程技术问答社区
Android N Java8 java.time
我更新到了最新的Android N SDK.我唯一不明白的是为什么我不能将java.time导入到我的代码中?我以为Java8可以通过Android N. 解决方案 Android N不支持Java 8的所有功能. 以下功能仅支持: 默认和静态接口方法 lambda表达 可重复注释 反射和与语言相关的API: java.lang.FunctionalInterface java.lang.annotation.Repeatable java.lang.reflect.Method.isDefault() 和与可重复注释相关的反射API,例如 AnnotatedElement.getAnnotationsByType(Class) 实用程序API: java.util.function 有关更多信息,请查看以下链接: http://developer.android.com/预览/j8-jack.html 其他解决方案 java
22 2024-01-28
编程技术问答社区