42

我想以这种格式 dd/mm/YYYY 将 Long 值转换为字符串或日期。

我有这个长格式的值:1343805819061。

是否可以将其转换为日期格式?

4

6 回答 6

96

您可以使用下面的代码行来执行此操作。这里 timeInMilliSecond 是长值。

 String dateString = new SimpleDateFormat("MM/dd/yyyy").format(new Date(TimeinMilliSeccond));

或者你也可以使用下面的代码。

 String longV = "1343805819061";
 long millisecond = Long.parseLong(longV);
 // or you already have long value of date, use this instead of milliseconds variable.
 String dateString = DateFormat.format("MM/dd/yyyy", new Date(millisecond)).toString();

参考:- DateFormatSimpleDateFormat

PS 根据您的需要更改日期格式。

于 2012-08-02T08:12:10.750 回答
5

您可以在 Date 实例或构造函数 Date(long) 上使用方法 setTime;

setTime(long time) 
      Sets this Date object to represent a point in time that is time milliseconds after January 1, 1970 00:00:00 GMT.

Date(long date) 
      Allocates a Date object and initializes it to represent the specified number of milliseconds since the standard base time known as "the epoch", namely January 1, 1970, 00:00:00 GMT

然后使用简单的日期格式化程序

请参阅http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/text/DateFormatter.html

于 2012-08-02T08:13:53.090 回答
4
java.util.Date dateObj = new java.util.Date(timeStamp);

这里timeStamp是你的长整数,实际上是以毫秒为单位的时间戳,你得到 java 日期对象,现在你可以通过这个将它转换为字符串

SimpleDateFormat dateformatYYYYMMDD = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateformatMMDDYYYY = new SimpleDateFormat("MMddyyyy");

StringBuilder nowYYYYMMDD = new StringBuilder( dateformatYYYYMMDD.format( dateObj ) );
StringBuilder nowMMDDYYYY = new StringBuilder( dateformatMMDDYYYY.format( dateObj ) );
于 2012-08-02T08:14:44.123 回答
2

java.time 和 ThreeTenABP

我正在提供现代答案。我建议使用现代 Java 日期和时间 API java.time 来进行日期工作。这将适用于您的 Android 版本:

    // Take Catalan locale as an example for the demonstration
    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM)
                    .withLocale(Locale.forLanguageTag("ca"));

    long millisecondsSinceEpoch = 1_343_805_819_061L;
    ZonedDateTime dateTime = Instant.ofEpochMilli(millisecondsSinceEpoch)
            .atZone(ZoneId.systemDefault());
    String dateString = dateTime.format(dateFormatter);
    System.out.println("As formatted date: " + dateString);

输出是:

格式化日期:01/08/2012

我建议您使用内置的本地化日期格式向您的用户展示。我以加泰罗尼亚日期格式为例。内置多种语言、国家和方言的格式。

大多数旧答案中使用的SimpleDateFormat班级是班级臭名昭著的麻烦制造者。使用的Date类也设计得很差。幸运的是,它们都已经过时了。不再建议使用其中任何一个。而且我发现 java.time 更好用。

问题:java.time 不需要 Android API 级别 26 吗?

java.time 在较旧和较新的 Android 设备上都能很好地工作。它只需要至少Java 6

  • 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
  • 在非 Android Java 6 和 7 中获得 ThreeTen Backport,现代类的后向端口(ThreeTen 用于 JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从org.threeten.bp子包中导入日期和时间类。

链接

于 2020-04-11T18:01:11.023 回答
1

如果 thre 有 10 位数字,那么试试这个

长日期长 = 1584212400;

日期 date = new Date(DateInLong*1000L);

SimpleDateFormat simpledateformate=new SimpleDateFormat("yyyy-MM-dd");

字符串 DATE = simpledateformate.format(date);

于 2020-03-13T12:57:24.413 回答
0
    public String getDuration(long msec) {
        if (msec == 0)
            return "00:00";
        long sec = msec / 1000;
        long min = sec / 60;
        sec = sec % 60;
        String minstr = min + "";
        String secstr = sec + "";
        if (min < 10)
            minstr = "0" + min;
        if (sec < 10)
            secstr = "0" + sec;
        return minstr + ":" + secstr;
    }
于 2020-11-06T10:49:44.677 回答