使用当天的开始时间获取日期

Getting Date with Start time of the Day

我正在使用以下函数获取今天的日期:

fun getCurrentDateTime(dateFormat: String): String {
    val Datetime: String
    val c = Calendar.getInstance()
    val dateformat = SimpleDateFormat(dateFormat, Locale.getDefault())
    Datetime = dateformat.format(c.time)
    return Datetime
}

我有 今天 的过滤器来排序获取今天过滤的数据。但是,通过上述功能,我使用相同的值进行过滤, 表示今天的开始日期和今天的结束日期都相同。

我想要不同的。 方法 : 开始日期应为 1639560609(2021 年 12 月 15 日,星期三 00:00:00 GMT+05:30) 和 结束日期应该是当前时间(我用上面的函数得到的)

所以,你得到的问题是我想要今天的开始日期和当天的开始时间。

怎么样?谢谢

使用LocalDateTime获取当前日期和一天的开始

val dateFormatter = DateTimeFormatter.ofPattern("EEEE, d MMMM yyyy HH:mm:ss")
val localDate = LocalDate.now()   // your current date time 
val startOfDay: LocalDateTime = localDate.atStartOfDay() // date time at start of the date
val timestamp = startOfDay.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() // start time to timestamp
Log.d("Date:", "start date $timestamp")
Log.d("Date:", "start date parsed ${startOfDay.format(dateFormatter)}")

输出:
开始日期时间戳:1639506600000
已解析的时间戳:2021 年 12 月 15 日,星期三 00:00:00

编辑:获取日期结束时间

val endOfDate: LocalDateTime = localDate.atTime(LocalTime.MAX)
val timestampEnd = endOfDate.atZone(ZoneId.of("UTC")).toInstant().epochSecond
  

捕捉当下。

Instant now = Instant.now() ;

请注意,对于任何给定时刻,日期在全球范围内因时区而异。某一时刻,在日本东京可能是“明天”,而在加拿大艾伯塔省埃德蒙顿可能是“昨天”。

特定时区

获取特定时区当时的生效日期。这里我们使用印度时区。

ZoneId zKolkata = ZoneId.of( "Asia/Kolkata" ) ;
LocalDate todayKolkata = now.atZone( zKolkata ).toLocalDate() ;

获取该区域日期的第一时刻。

ZonedDateTime startOfTodayKolkata = todayKolkata.atStartOfDay( zKolkata ) ;

获取从 1970 UTC 的第一时刻到加尔各答该日期的第一时刻的整秒计数。

long secondsSinceEpochToStartOfTodayKolkata = startOfTodayKolkata.toInstant().getEpochSecond() ;

如果您想跟踪一天的完整长度,请使用半开方法。在 Half-Open 中,开始是包容性的,而结局是排他性的。因此,一整天从一个日期的第一时刻开始,一直到但不包括 天的开始。

ZonedDateTime startOfTomorrowKolkata = todayKolkata.plusDays( 1 ).atStartOfDay( z ) ;

使用 ThreeTen-Extra 库中的 Interval class 将一整天作为一对 Instant 对象进行跟踪。

Interval allDayTodayKolkata = Interval.between( startOfTodayKolkata , startOfTomorrowKolkata ) ;

UTC(零偏移量)

相比之下,确定今天日期的第一个时刻,偏移量为零小时-分钟-秒。

LocalDate todayUtc = now.atOffset( ZoneOffset.UTC ).toLocalDate() ;
ZonedDateTime startOfDayUtc = todayUtc.atStartOfDay( ZoneOffset.UTC ) ;
long secondsSinceEpochToStartOfDayUtc = startOfDayUtc.toInstant().getEpochSecond() ;