如何使用Joda-Time API 获取下周五.
在LocalDate
今天的是today
.在我看来,你必须在本周五之前或之后决定你是谁.看到这个方法:
private LocalDate calcNextFriday(LocalDate d) {
LocalDate friday = d.dayOfWeek().setCopy(5);
if (d.isBefore(friday)) {
return d.dayOfWeek().setCopy(5);
} else {
return d.plusWeeks(1).dayOfWeek().setCopy(5);
}
}
Run Code Online (Sandbox Code Playgroud)
是可以缩短它还是使用oneliner?
PS:请不要建议我使用JDK的日期/时间.Joda-Time是一个更好的API.
Java 8引入了更好的java.time包(Tutorial).
我已经看了一下OpenJDK的源代码,CopyOnWriteArrayList
似乎所有的写操作都受到同一个锁的保护,读操作根本就没有受到保护.据我所知,在JMM下,所有对变量(读取和写入)的访问都应该受到锁定或重新排序的影响.
例如,set(int, E)
方法包含这些行(在锁定下):
/* 1 */ int len = elements.length;
/* 2 */ Object[] newElements = Arrays.copyOf(elements, len);
/* 3 */ newElements[index] = element;
/* 4 */ setArray(newElements);
Run Code Online (Sandbox Code Playgroud)
get(int)
另一方面,该方法仅适用return get(getArray(), index);
.
在我对JMM的理解中,这意味着get
如果语句1-4被重新排序,如1-2(新)-4-2(copyOf)-3 ,则可能会观察到数组处于不一致状态.
我是否理解JMM不正确或是否有任何其他解释为什么CopyOnWriteArrayList
线程安全?
如何在IntelliJ IDEA中用花括号包围代码?这种操作有键盘快捷键吗?
在Java中,我首先实例化ZipOutputStream还是首先实例化BufferedOutputStream?例:
FileOutputStream dest = new FileOutputStream(file);
ZipOutputStream zip = new ZipOutputStream(new BufferedOutputStream(dest));
// use zip output stream to write to
Run Code Online (Sandbox Code Playgroud)
要么:
FileOutputStream dest = new FileOutputStream(file);
BufferedOutputStream out = new BufferedOutputStream(new ZipOutputStream(dest));
// use buffered stream to write to
Run Code Online (Sandbox Code Playgroud)
在我非科学的时间里,我似乎无法在这里说出很多不同之处.我在Java API中看不到任何表明这些方法之一是必要的还是首选的.有什么建议?似乎首先压缩输出然后缓冲它以进行写入会更有效.
在Java 8及更高版本中可用Duration
的新JSR 310 date API(java.time包)中的类中,javadoc说:
此类以秒和纳秒为单位模拟时间量或时间量.它可以使用其他基于持续时间的单位进行访问,例如分钟和小时.此外,DAYS单位可以使用,并且被视为完全等于24小时,因此忽略了夏令时效果.
那么,为什么以下代码崩溃?
Duration duration = Duration.ofSeconds(3000);
System.out.println(duration.get(ChronoUnit.MINUTES));
Run Code Online (Sandbox Code Playgroud)
这提出了一个UnsupportedTemporalTypeException
:
java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Minutes
at java.time.Duration.get(Duration.java:537)
Run Code Online (Sandbox Code Playgroud)
那么从持续时间对象中提取分钟和小时的推荐方法是什么?我们是否必须从秒数开始计算?为什么这样实现?
是否有一个简短的方法来说"整个字符串"而不是输入:
NSMakeRange(0, myString.length)]
Run Code Online (Sandbox Code Playgroud)
这种代码中最长的一部分是最不重要的(因为我通常想在整个字符串中搜索/替换),这似乎很愚蠢......
[myString replaceOccurrencesOfString:@"replace_me"
withString:replacementString
options:NSCaseInsensitiveSearch
range:NSMakeRange(0, myString.length)];
Run Code Online (Sandbox Code Playgroud) 是否可以在SQLite中使用UUID值作为主键?我发现关于这个主题的信息非常有限,所以我不确定SQLite是否支持UUID数据类型.我应该将UUID存储为字符串吗?
当我尝试读取csv时,我收到此错误消息:
Exception in thread "main" java.lang.IllegalStateException: No header mapping was specified, the record values can't be accessed by name
at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:99)
at mockdata.MockData.main(MockData.java:33)
Run Code Online (Sandbox Code Playgroud)
Java结果:1
我正在使用Apache Commons CSV库1.1.尝试使用Google搜索错误消息,我唯一得到的是像grepcode这样的网站上的代码列表.
这是我的代码:
package mockdata;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;
public class MockData
{
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException
{
Reader in = new InputStreamReader(MockData.class.getClassLoader()
.getResourceAsStream("MOCK_DATA.csv"), "UTF-8");
Iterable<CSVRecord> records = CSVFormat.EXCEL.parse(in);
for (CSVRecord record …
Run Code Online (Sandbox Code Playgroud) 我的应用程序托管在伦敦服务器中.我在西班牙马德里.所以时区是-2小时.
如何获取我的时区的当前日期/时间.
Date curr_date = new Date(System.currentTimeMillis());
Run Code Online (Sandbox Code Playgroud)
例如
Date curr_date = new Date(System.currentTimeMillis("MAD_TIMEZONE"));
Run Code Online (Sandbox Code Playgroud)
DateTimeZone zone = DateTimeZone.forID("Europe/Madrid");
DateTime dt = new DateTime(zone);
int day = dt.getDayOfMonth();
int year = dt.getYear();
int month = dt.getMonthOfYear();
int hours = dt.getHourOfDay();
int minutes = dt.getMinuteOfHour();
Run Code Online (Sandbox Code Playgroud) java ×7
jodatime ×2
concurrency ×1
csv ×1
curly-braces ×1
date ×1
datetime ×1
io ×1
ios ×1
java-8 ×1
java-time ×1
mixins ×1
nsrange ×1
nsstring ×1
objective-c ×1
outputstream ×1
sqlite ×1
time ×1
timezone ×1
uuid ×1