【问题标题】:Not Work current Date and time in android [duplicate]android中的当前日期和时间不起作用[重复]
【发布时间】:2021-11-06 08:04:08
【问题描述】:

我想在 Android Studio 中使用 Java 将从系统接收到的日期和时间转换为整数

例如

系统日期/时间:2021-06-18 19:51:43 --> 转换为:1624029703

请指导我

【问题讨论】:

  • 你有没有尝试过?您确实需要先努力进行搜索。我在下面的评论中的问题是在
  • int 没有足够的位来存储日期和时间,long 有足够的位来存储自 Unix 纪元以来的毫秒数,但我认为它不能保留时区。
  • 您的搜索结果是什么?我找到了例如How to Convert Timestamp String to Unix Time (Epoch) in Java。请了解您应该在此处发布问题之前进行搜索。
  • 不要使用SimpleDateFormatCalendarDate。使用 java.time,现代 Java 日期和时间 API。 LocalDateTime.parse("2021-06-18 19:51:43", DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss")).atZone(ZoneId.of("Asia/Tehran")).toEpochSecond() 产生 1624029703。
  • @JonnyHenly 我也是这么想的。但是(1)long 也算作一种整数(OP 只要求整数,而不是 int)。 (2) 直到 2038 年,即接下来的 15 年以上,32 位 int 就足够了。当然,我们不应该满足于此,我们应该让我们的代码面向未来。

标签: java android android-studio datetime


【解决方案1】:

您可以创建一个接受String 的方法dateConverter()

public static long dateConverter(String date) {
        DateTimeFormatter dateFormatter
                = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
        return LocalDate.parse(date, dateFormatter)
                .atStartOfDay(ZoneOffset.UTC)
                .toInstant()
                .toEpochMilli();

    }

DateTimeFormatter 是旧的 SimpleDateFormat 的替代品。

然后您可以从main 调用此方法。

public class Main {

    public static void main(String[] args) {

        long longDate = dateConverter("2021-06-18 19:51:43");


        System.out.println("Long Date is: " + longDate);

    }

【讨论】:

  • 它不适用于 minSDK= 17 的应用程序
猜你喜欢
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
相关资源
最近更新 更多