将JodaTime转换为Long Integer格式

时间:2014-06-23 10:55:39

标签: java jodatime

你好,我有一个日期格式,我在长整数格式的API调用中使用。该API调用不支持任何其他格式的日期,它应如下所示。

public static long start_date=20140401101010L;
    public static long end_date=20140430101010L;

我必须在该日期进行一些更改,因此我将该日期更改为JodaDate格式,如下面的代码所示。

DateTime startDateTime = formatter.parseDateTime(String.valueOf(start_date)); 
DateTime endDateTime = formatter.parseDateTime(String.valueOf(end_date));

这是我们将普通变量转换为DateTime对象的方法。那我该怎么做呢?如果我有一个JodaTime 2014-04-30T10:10:10.000 + 05:30,我想将这个时间改为这个格式,它是一个长整数。 20140430101010L。我想这样做,因为我正在做一个API程序,url参数有时间,只支持上面的格式而不是JodaTime。

4 个答案:

答案 0 :(得分:3)

将joda时间对象格式化为字符串,然后转换为long。

您需要一个以您想要的格式输出的格式化程序

DateTimeFormatter  formatter = DateTimeFormat.forPattern("yyyyMMddHHmmss");
String formatted = formatter.format(datetime);
long lvalue = Long.parseLong(formatted).longValue();

答案 1 :(得分:2)

一种解决方案是使用DateTimeFormat构建String,然后将其解析为Long。

答案 2 :(得分:0)

如果真的需要long格式,我会严重质疑:

long dateTimeLong = year    * 10000000000L
                  + month   *   100000000L
                  + date    *     1000000L
                  + hours   *       10000L
                  + minutes *         100L
                  + seconds *           1L;

你说你需要一个URL参数,这是一个字符串,而不是长。所以只需使用

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHHmmss");
String dateTimeString = formatter.print(dateTime);

答案 3 :(得分:0)

public class DateConverter {
    private static DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHHmmss");
    private final DateTime dateTime;

    public DateConverter(DateTime dateTime) {
        this.dateTime = dateTime;
    }

    private Long toLong() {
        return Long.valueOf(dateTime.toString(formatter));
    }

    public static void main(String [] args) {
        System.out.println(new DateConverter(DateTime.now()).toLong());
    }
}

输出:

20140623131922

Process finished with exit code 0