我在尝试:
NSDate *currentDateInLocal = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:SS.SSS'Z'"];
NSString *currentLocalDateAsStr = [dateFormatter stringFromDate:currentDateInLocal];
NSDateFormatter * dateFormatter2 = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter2 setTimeZone:timeZone];
[dateFormatter2 setDateFormat:@"yyyy-MM-dd'T'HH:mm:SS.SSS'Z'"];
NSDate *currentDateInUTC = [dateFormatter2 dateFromString:currentLocalDateAsStr];
Run Code Online (Sandbox Code Playgroud)
但它仍然不代表当前的UTC时间,我该如何实现呢?
谢谢
如何集成创建/接收连接,查询数据库以及可能使用Java 7的自动资源管理(try-with-resources语句)处理结果的常用JDBC习惯用法?(教程)
在Java 7之前,通常的模式是这样的:
Connection con = null;
PreparedStatement prep = null;
try{
con = getConnection();
prep = prep.prepareStatement("Update ...");
...
con.commit();
}
catch (SQLException e){
con.rollback();
throw e;
}
finally{
if (prep != null)
prep.close();
if (con != null)
con.close();
}
Run Code Online (Sandbox Code Playgroud)
使用Java 7,您可以选择:
try(Connection con = getConnection(); PreparedStatement prep = con.prepareConnection("Update ..."){
...
con.commit();
}
Run Code Online (Sandbox Code Playgroud)
这将关闭Connection和PreparedStatement,但滚动呢?我无法添加包含回滚的catch子句,因为该连接仅在try块中可用.
你还在try块之外定义连接吗?这里的最佳做法是什么,尤其是在使用连接池的情况下?
如果我们使用ExecutorCompletionService,我们可以提交一系列任务作为Callables,并将结果与CompletionServiceas进行交互queue.
但也有在invokeAll的ExecutorService,它接受一个Collection任务,我们得到的名单Future,以检索结果.
据我所知,有在使用一个或比其他任何好处(除了我们避免for使用循环invokeAll,我们将不得不submit对任务的CompletionService),基本上他们是有轻微的差别同样的想法.
那么为什么有两种不同的方式来提交一系列任务呢?我是否正确表现他们是相同的?是否有一个比另一个更合适的情况?我想不出一个.
java concurrency multithreading executorservice java.util.concurrent
对于Java 10或+,我们可以使用var关键字进行声明。在初始化时,编译器将推断类型。
当我实例化的类并分配给用 , 声明的变量var,是接口的实现时,会发生什么?将推断哪种类型,接口还是实现?
随着Mac OS X(Mavericks)上的第一个Java 8(b132)发布,使用新的java.time包的代码可以工作:
String input = "20111203123456";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "yyyyMMddHHmmss");
LocalDateTime localDateTime = LocalDateTime.parse( input, formatter );
Run Code Online (Sandbox Code Playgroud)
渲染:
2011-12-03T12:34:56
Run Code Online (Sandbox Code Playgroud)
但是当我按照DateTimeFormatter类doc中的指定添加"SS"作为秒的小数(和"55"作为输入)时,会抛出异常:
java.time.format.DateTimeParseException: Text '2011120312345655' could not be parsed at index 0
Run Code Online (Sandbox Code Playgroud)
该文档说默认使用严格模式,并且需要与输入数字相同数量的格式字符.所以我很困惑为什么这段代码失败了:
String input = "2011120312345655";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "yyyyMMddHHmmssSS");
LocalDateTime localDateTime = LocalDateTime.parse( input, formatter );
Run Code Online (Sandbox Code Playgroud)
使用文档中的示例("978")的另一个示例(失败):
String input = "20111203123456978";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "yyyyMMddHHmmssSSS");
LocalDateTime localDateTime = LocalDateTime.parse( input, formatter );
Run Code Online (Sandbox Code Playgroud)
这个例子工作,添加一个小数点(但我发现在doc中没有这样的要求):
String input = "20111203123456.978";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( …Run Code Online (Sandbox Code Playgroud) 我有一个java.util.Date对象或一个java.util.Calendar对象.如何在java.time框架中将其转换为正确的类型?
我听说我们现在应该使用java.time类型来处理大部分业务逻辑.使用尚未针对java.time更新的旧代码时,我需要能够来回转换.什么类型映射到java.util.Date或java.util.Calendar?
我正在尝试做一个简单的日期格式,它确实很好用,它很容易,但问题是语言.我使用语言环境"es_ES"来获取"Miércoles"而不是"Wednesday",并对此进行排序,但我失败了.
这是我的代码:
SimpleDateFormat formato =
new SimpleDateFormat("EEEE d 'de' MMMM 'de' yyyy", new Locale("es_ES"));
String fecha = formato.format(new Date());
Run Code Online (Sandbox Code Playgroud)
fecha字符串的EXPECTED值为:
Miércoles4de Abril de 2012
但我仍然得到:
2012年4月4日星期三
我究竟做错了什么?
我已阅读文档并有一些了解.
请更正或告知我真相; 根据我的理解:
provided
依赖项必须位于运行代码的计算机上,并且必须包含在路径中
compile
依赖项不会在运行代码的计算机上,因此请将它们包含在构建中
system
与提供的完全相同,但您需要严格依赖于jar文件中的依赖项
import
好像它应该从其他POM文件导入依赖项,但我不知道如何/为什么,所以一点点阐述将不胜感激
所以我很幸运能够使用Java 8和新的时间APi,但我没有看到任何舍入函数......
基本上如果时间是......
2014-08-28T10:01.00.000 ----> 2014-08-28T10:02.00.000
2014-08-28T10:01.10.123 ----> 2014-08-28T10:02.00.000
2014-08-28T10:01.25.123 ----> 2014-08-28T10:02.00.000
2014-08-28T10:01.49.123 ----> 2014-08-28T10:02.00.000
2014-08-28T10:01.59.999 ----> 2014-08-28T10:02.00.000
Run Code Online (Sandbox Code Playgroud)
这似乎没问题,但是对吗?
LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
LocalDateTime newTime = now.plusMinutes(1);
System.out.println(newTime.toString());
System.out.println(newTime.format(DateTimeFormatter.ofPattern("yyyy-dd-MM'T'HH:mm:00.000")));
Run Code Online (Sandbox Code Playgroud) 我的API允许库客户端传递日期:
method(java.util.Date date)
Run Code Online (Sandbox Code Playgroud)
与Joda-Time合作,从这一天开始,我想提取月份并迭代本月所有日子.
现在,传递的日期通常是新的Date() - 意味着当前的瞬间.我的问题实际上是将新的DateMidnight(jdkDate)实例设置为月初.
有人可以用Joda-Time演示这个用例吗?