将JodaTime转换为长整型格式

3

你好,我有一个日期格式,我将其用作长整型格式的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,我想将该时间更改为此格式,即Long整数20140430101010L。我想这样做是因为我正在编写一个API程序,URL参数中有时间,只支持上述格式而不支持JodaTime。


请问您能否发布一下formatter的定义 - 它是一个SimpleDateFormat吗?格式字符串是什么(YYYY MM等等...)? - vikingsteve
我想将其更改为YYYYMMDDHHMMSS格式 - sarath
如果它是一个"URL参数",为什么需要是一个长整型呢? - Christoffer Hammarström
因为“URL参数”是字符串,而不是长整型。 - Christoffer Hammarström
4个回答

3
将您的joda时间对象格式化为字符串,然后将其转换为长整型。 您需要一个以所需格式输出的格式化程序。
DateTimeFormatter  formatter = DateTimeFormat.forPattern("yyyyMMddHHmmss");
String formatted = formatter.format(datetime);
long lvalue = Long.parseLong(formatted).longValue();

2

一种解决方案是使用DateTimeFormat构建字符串,然后将其解析为长整型。


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);

@vikingsteve:不,它们是两个不同的例子。第一个例子是针对sarath需要一个长整型变量,我觉得她说的是为了"URL参数",而第二个例子是针对字符串,我认为对于URL参数来说使用字符串应该是可以的。 - Christoffer Hammarström
好的,他说他的API只支持Long类型的参数 - 如果他需要转换为Long类型,他可以告诉我们。 - vikingsteve
@vikingsteve: 那么你对于“URL参数具有时间,并且仅支持上述格式”这句话的理解是什么呢?URL参数不就是一个字符串吗? - Christoffer Hammarström
同志们,这个变量是用 Long 类型的,因为 URL 参数只支持格式为 YYYYMMDDHHMMSS 的日期时间。它是一个由14位数字组成的数字,不能使用整数类型,所以我不得不使用 Long 类型来表示它。 - sarath
你说的“URL参数”是什么意思?URL参数是字符串。 - Christoffer Hammarström

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接