相关疑难解决方法(0)

如何在Android Project中使用ThreeTenABP

我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.

对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:

>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud)

datetime android android-gradle-plugin threetenbp threetenabp

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

将日期转换为不同的时区

我正在尝试使用Java日期和日历从一个时区到另一个时区进行简单的转换.我试图运行以下代码

    Calendar instance = Calendar.getInstance(TimeZone.getTimeZone("Europe/London"));
    Date date = instance.getTime();
    System.out.println(date);

    GregorianCalendar instance2 = new GregorianCalendar(TimeZone.getTimeZone("Europe/Athens"));
    instance2.setTime(instance.getTime());
    System.out.println(instance2.getTime());
Run Code Online (Sandbox Code Playgroud)

但仍然返回相同的日期,而不是+1小时...整个问题似乎微不足道,但我找不到任何简单的答案.在此先感谢您的帮助.

java timezone datetime calendar date

24
推荐指数
2
解决办法
6万
查看次数

oracle jdbc中的PreparedStatement和setTimestamp

我在where子句中使用带有时间戳的PreparedStatement:

PreparedStatement s=c.prepareStatement("select value,utctimestamp from t where utctimestamp>=? and utctimestamp<?"); 
s.setTimestamp(1, new Timestamp(1273017600000L));   //2010-05-05 00:00 GMT
s.setTimestamp(2, new Timestamp(1273104000000L));   //2010-05-06 00:00 GMT
ResultSet rs = s.executeQuery();
if(rs.next()) System.out.println(rs.getInt("value"));
Run Code Online (Sandbox Code Playgroud)

当我在客户端计算机上有不同的时区时,我得到的结果是不同的.这是Oracle jdbc中的错误吗?还是纠正行为?

Oracle数据库版本是10.2,我已经尝试使用oracle jdbc瘦驱动程序版本10.2和11.1.

参数是Timestamp,我预计在途中不会进行任何时间转换.数据库列类型是DATE,但我也使用TIMESTAMP列类型检查它,结果相同.

有没有办法达到正确的结果?我无法将整个应用程序中的默认时区更改为UTC.

谢谢你的帮助

java oracle timestamp jdbc prepared-statement

19
推荐指数
1
解决办法
3万
查看次数

时区java:德克萨斯州圣安东尼奥市

嗨,我想设置德克萨斯州圣安东尼奥的时区.有些请告诉我如何在我的Java代码中设置相同.

我希望它的格式与美国/纽约有些相似

目前我正在使用此代码

TimeZone.getTimeZone("America/Denver");
Run Code Online (Sandbox Code Playgroud)

但"美国/丹佛"似乎并不适合德克萨斯州圣安东尼奥市

java timezone datetime

8
推荐指数
1
解决办法
8978
查看次数

GMT中的Java时间

我有一个Grails应用程序,代码如下:

Date now = Calendar.getInstance().getTime() //Also tried new Date()
println "now: " + now
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我明白了now: Thu Aug 18 12:47:09 CDT 2011.我需要将日期设置为GMT,而不是当地时间,因为我需要将GMT时间存储在数据库中.我可以使用simpleDateFormat对象在GMT中打印出时间,但我需要将其实际存储为GMT.

问题:如何使用GMT将Date对象转换为Date对象?

java grails date gmt

5
推荐指数
1
解决办法
4082
查看次数

Java中GMT中的毫秒数

我需要将毫秒转换为GMT日期(在Android应用中),例如:

1372916493000

当我通过此代码转换它:

Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
cal.setTimeInMillis(millis);
Date date = cal.getTime();
Run Code Online (Sandbox Code Playgroud)

结果是07:41 07/04/2013.当我使用时,结果是一样的:

Date date = new Date(millis);
Run Code Online (Sandbox Code Playgroud)

不幸的是结果看起来不正确,看起来像我当地的时间.我尝试通过此服务转换相同的数字,结果是05:41 07/04/2013,我认为是正确的.所以我有两个小时的差异.任何人都有任何建议/提示我的转换有什么问题?

java android date

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

如何将UTC格式的字符串转换为特定时区的日历?

我正在尝试将一些UTC时间的字符串转换为应设置为GMT-5的Java Calendar对象.

我当前的UTC字符串输入是这样的:

UTC日期:20050329174411

我使用这段代码(我检测'pattern'如下所示):

DateFormat dateFormat = new SimpleDateFormat(pattern);
Date date = dateFormat.parse(utcDate);
calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT-5"));
calendar.setTime(date);
Run Code Online (Sandbox Code Playgroud)

然后我打印出这样的时间:

calendar.getTime()

我得到了这个结果:

格林威治标准时间:2005年3月29日星期二17:44:11

我需要支持这些日期/时间字符串模式:

FORMAT_UTC4 = "yyyy";           
FORMAT_UTC6 = "yyyyMM";         
FORMAT_UTC8 = "yyyyMMdd";       
FORMAT_UTC10 = "yyyyMMddHH";    
FORMAT_UTC12 = "yyyyMMddHHmm";  
FORMAT_UTC14 = "yyyyMMddHHmmss";
Run Code Online (Sandbox Code Playgroud)

我希望时间设置为"12:44:11".我已经阅读了几个例子,我发现日期时间处理非常令人困惑.对我来说,它总是一样的,我得到一些字符串格式化的UTC,我把它转换为GMT-5.我觉得它应该很容易!

参考1:如何用Java获取UTC或GMT中的当前日期和时间?

参考2:如何使用Java处理日历时区?

java timezone date utc gmt

3
推荐指数
1
解决办法
4618
查看次数

将日历转换为java.util.Date的问题

我需要使用澳大利亚时区创建一个java.util.Date对象.下游组件中使用的标记库需要此对象(因此我坚持使用Date).

这是我尝试过的:

TimeZone timeZone = TimeZone.getTimeZone("Australia/Sydney");
GregorianCalendar defaultDate = new GregorianCalendar(timeZone);
Date date = defaultDate.getTime();
Run Code Online (Sandbox Code Playgroud)

但是,"date"始终返回当前本地时间(在我的情况下,ET).我在这做错了什么?甚至可以使用不同的时区设置Date对象吗?

更新:

谢谢你的回复!如果我想将格式化的日期输出为字符串,则此方法有效,但如果我想返回日期对象则不行.例如:

Date d = new Date();
DateFormat df = new SimpleDateFormat();
df.setTimeZone(TimeZone.getTimeZone("Australia/Sydney"));

String formattedDate = df.format(d);   // returns Sydney date/time
Date myDate = df.parse(formattedDate); // returns local time(ET)
Run Code Online (Sandbox Code Playgroud)

我想我最终会重新修改我们的日期taglib.

java calendar date

2
推荐指数
1
解决办法
9423
查看次数