相关疑难解决方法(0)

在Java中,如何获得2个日期之间的秒数差异?

Java类库有一个名为DateTime的类.DateTime有这个方法:

int daysBetween(DateTime other)
Run Code Online (Sandbox Code Playgroud)

返回此参数与参数之间的天数.它没有方法

int secondsBetween(DateTime other)
Run Code Online (Sandbox Code Playgroud)

我碰巧需要它.是否有一个类似于DateTime的类但有这样的方法?

java datetime date

64
推荐指数
7
解决办法
13万
查看次数

转换给定时区的日期/时间 - java

我想将此GMT时间戳转换为GMT + 13:

2011-10-06 03:35:05
Run Code Online (Sandbox Code Playgroud)

我尝试过大约100种不同的DateFormat,TimeZone,Date,GregorianCalendar等组合来尝试做这个非常基本的任务.

这段代码完成了我对CURRENT TIME的要求:

Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));

DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");    
formatter.setTimeZone(TimeZone.getTimeZone("GMT+13"));  

String newZealandTime = formatter.format(calendar.getTime());
Run Code Online (Sandbox Code Playgroud)

但我想要的是设定时间而不是使用当前时间.

我发现任何时候我都尝试设置这样的时间:

calendar.setTime(new Date(1317816735000L));
Run Code Online (Sandbox Code Playgroud)

使用本地机器的TimeZone.这是为什么?我知道当"new Date()"返回UTC + 0时,为什么当你设置Time以毫秒为单位时,它不再假设时间是UTC?

有可能:

  1. 设置对象的时间(日历/日期/时间标准)
  2. (可能)设置初始时间戳的时区(calendar.setTimeZone(...))
  3. 使用新的TimeZone格式化时间戳(formatter.setTimeZone(...)))
  4. 返回具有新时区时间的字符串.(formatter.format(calendar.getTime()))

在此先感谢您的帮助:D

java formatting timezone datetime timestamp

63
推荐指数
6
解决办法
28万
查看次数

如何使用SimpleDateFormat将String转换为Date?

我有这段代码:

DateFormat formatter1;
formatter1 = new SimpleDateFormat("mm/DD/yyyy");
System.out.println((Date)formatter1.parse("08/16/2011"));
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我将其作为输出:

Sun Jan 16 00:10:00 IST 2011
Run Code Online (Sandbox Code Playgroud)

我期望:

Tue Aug 16 "Whatever Time" IST 2011
Run Code Online (Sandbox Code Playgroud)

我的意思是说我没有达到预期的月份.这是什么错误?

java datetime date-format simpledateformat

62
推荐指数
4
解决办法
31万
查看次数

带有冒号分隔符的时区的Java SimpleDateFormat?

我有以下格式的日期: 2010-03-01T00:00:00-08:00

我在它上面抛出了以下SimpleDateFormats来解析它:

private static final SimpleDateFormat[] FORMATS = {
        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"), //ISO8601 long RFC822 zone
        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"), //ISO8601 long long form zone
        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"), //ignore timezone
        new SimpleDateFormat("yyyyMMddHHmmssZ"), //ISO8601 short
        new SimpleDateFormat("yyyyMMddHHmm"),
        new SimpleDateFormat("yyyyMMdd"), //birthdate from NIST IHE C32 sample
        new SimpleDateFormat("yyyyMM"),
        new SimpleDateFormat("yyyy") //just the year
    };
Run Code Online (Sandbox Code Playgroud)

我有一个方便的方法,使用这样的格式:

public static Date figureOutTheDamnDate(String wtf) {
    if (wtf == null) {
        return null;
    }
    Date retval = null;
    for (SimpleDateFormat sdf : FORMATS) {
        try {
            sdf.setLenient(false)
            retval = sdf.parse(wtf); …
Run Code Online (Sandbox Code Playgroud)

java date iso8601

60
推荐指数
6
解决办法
18万
查看次数

将unix时间戳转换为java中的日期

如何在Unix中将分钟从unix时间戳转换为日期和时间.例如,时间戳1372339860对应于Thu, 27 Jun 2013 13:31:00 GMT.

我想转换13723398602013-06-27 13:31:00 GMT.

编辑:其实我希望它是根据美国时间GMT-4,所以它会2013-06-27 09:31:00.

java unix-timestamp

60
推荐指数
3
解决办法
13万
查看次数

Java 8:计算两个ZonedDateTime之间的差异

我正在尝试编写一种方法来打印两个ZonedDateTime之间的时差,关于时区之间的差异.

我找到了一些解决方案,但所有这些解决方案都是用LocalDateTime编写的.

java timezone datetime date java-8

58
推荐指数
2
解决办法
3万
查看次数

如何在java中将分钟转换为小时和分钟(hh:mm)

我需要在java中将分钟转换为小时和分钟.例如260应该是4:20.任何人都可以帮助我如何转换它.

java

57
推荐指数
4
解决办法
13万
查看次数

如何使用Joda Time解析包含时区的日期

这段代码始终将日期解析为当前时区,而不是解析为正在解析的字符串中的时区.

final DateTimeFormatter df = DateTimeFormat
        .forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df
        .parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
System.out.println("dateTime = " + dateTime);
// outputs dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)

它输出:

dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)

而我期望:

dateTime = 2009-08-24T04:36:46.000+10:00
Run Code Online (Sandbox Code Playgroud)

我有什么想法我做错了吗?

java timezone datetime jodatime

53
推荐指数
2
解决办法
4万
查看次数

我怎样才能找到两个日期之间的年数?

我试图确定从某个日期开始的年龄.有没有人知道在Android中这样做的干净方法?我显然有Java api可用,但直接的java api非常弱,我希望Android有一些东西可以帮助我.

编辑:在Android中使用Joda时间的多个建议让我有点担心Android Java - Joda Date很慢且相关问题.此外,拉入一个未随平台一起提供的库,这个尺寸可能太大了.

java android date

53
推荐指数
4
解决办法
9万
查看次数

SimpleDateFormat解析丢失时区

码:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(new Date());
    try {
        String d = sdf.format(new Date());
        System.out.println(d);
        System.out.println(sdf.parse(d));
    } catch (Exception e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
Run Code Online (Sandbox Code Playgroud)

输出:

Thu Aug 08 17:26:32 GMT+08:00 2013
2013.08.08 09:26:32 GMT
Thu Aug 08 17:26:32 GMT+08:00 2013
Run Code Online (Sandbox Code Playgroud)

请注意,format()格式Date正确格式为GMT,但parse()丢失了GMT详细信息.我知道我可以使用substring()并解决这个问题,但这种现象背后的原因是什么?

这是一个重复的问题,没有任何答案.

编辑:让我以另一种方式提出问题,检索Date对象的方式是什么,以便它始终在GMT中?

java date gmt simpledateformat

53
推荐指数
3
解决办法
9万
查看次数