小编Bas*_*que的帖子

Objective-C,如何以UTC时区获取当前日期?

我在尝试:

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时间,我该如何实现呢?

谢谢

objective-c nsdate nsdateformatter ios

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

Java 7自动资源管理JDBC(try-with-resources语句)

如何集成创建/接收连接,查询数据库以及可能使用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)

这将关闭ConnectionPreparedStatement,但滚动呢?我无法添加包含回滚的catch子句,因为该连接仅在try块中可用.

你还在try块之外定义连接吗?这里的最佳做法是什么,尤其是在使用连接池的情况下?

java jdbc java-7 try-with-resources

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

ExecutorCompletionService?如果我们有invokeAll,为什么需要一个?

如果我们使用ExecutorCompletionService,我们可以提交一系列任务作为Callables,并将结果与CompletionServiceas进行交互queue.

但也有在invokeAllExecutorService,它接受一个Collection任务,我们得到的名单Future,以检索结果.

据我所知,有在使用一个或比其他任何好处(除了我们避免for使用循环invokeAll,我们将不得不submit对任务的CompletionService),基本上他们是有轻微的差别同样的想法.

那么为什么有两种不同的方式来提交一系列任务呢?我是否正确表现他们是相同的?是否有一个比另一个更合适的情况?我想不出一个.

java concurrency multithreading executorservice java.util.concurrent

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

Java 中的 var 关键字

对于Java 10或+,我们可以使用var关键字进行声明。在初始化时,编译器将推断类型。

当我实例化的类并分配给用 , 声明的变量var,是接口的实现时,会发生什么?将推断哪种类型,接口还是实现?

java var

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

java.time无法解析小数部分吗?

随着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 java-time

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

将java.util.Date转换为"java.time"类型?

我有一个java.util.Date对象或一个java.util.Calendar对象.如何在java.time框架中将其转换为正确的类型?

我听说我们现在应该使用java.time类型来处理大部分业务逻辑.使用尚未针对java.time更新的旧代码时,我需要能够来回转换.什么类型映射到java.util.Datejava.util.Calendar

java datetime date java-time

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

无法使用区域设置将日期翻译为西班牙语("es_ES")

我正在尝试做一个简单的日期格式,它确实很好用,它很容易,但问题是语言.我使用语言环境"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日星期三

我究竟做错了什么?

java locale date

33
推荐指数
2
解决办法
5万
查看次数

这些Maven依赖范围之间有什么区别:提供/编译/系统/导入

我已阅读文档并有一些了解.

请更正或告知我真相; 根据我的理解:

  • provided
    依赖项必须位于运行代码的计算机上,并且必须包含在路径中

  • compile
    依赖项不会在运行代码的计算机上,因此请将它们包含在构建中

  • system
    与提供的完全相同,但您需要严格依赖于jar文件中的依赖项

  • import
    好像它应该从其他POM文件导入依赖项,但我不知道如何/为什么,所以一点点阐述将不胜感激

maven-2 maven

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

使用Java 8在几分钟内完成

所以我很幸运能够使用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)

datetime rounding ceil java-8 java-time

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

在Joda-Time中,将DateTime设置为月初

我的API允许库客户端传递日期:

method(java.util.Date date)
Run Code Online (Sandbox Code Playgroud)

Joda-Time合作,从这一天开始,我想提取月份并迭代本月所有日子.

现在,传递的日期通常是新的Date() - 意味着当前的瞬间.我的问题实际上是将新的DateMidnight(jdkDate)实例设置为月初.

有人可以用Joda-Time演示这个用例吗?

java date jodatime

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