有人可以建议当前的"最佳实践" Date和Calendar类型.
当编写新的代码,它是最好的总是青睐Calendar过Date,还是有地方的情况Date是比较合适的数据类型?
我正在添加这个问题,因为我是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
有没有一种简单的方法将LocalDate(用Java 8引入)转换为java.util.Date对象?
通过'简单',我的意思是比这更简单:
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎有点尴尬.
由于我们只对日期部分感兴趣,并且两个对象中都没有时区信息,为什么要明确引入时区?应该隐式采用午夜时间和系统默认时区进行转换.
如何获得一天的开始时间和结束时间?
这样的代码不准确:
private Date getStartOfDay(Date date) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
calendar.set(year, month, day, 0, 0, 0);
return calendar.getTime();
}
private Date getEndOfDay(Date date) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);
calendar.set(year, month, day, 23, 59, 59);
return calendar.getTime();
}
Run Code Online (Sandbox Code Playgroud)
它毫不准确到毫秒.
我最近继承的应用程序是关于构造函数的全部弃用警告:
Date d = new Date(int year, int month, int day)
Run Code Online (Sandbox Code Playgroud)
有没有人知道或者可以指出为什么像这样简单的东西被这样的东西"替换"的原因:
Date d = null;
Calendar cal = GregorianCalendar.getInstance();
cal.set(1900 + year, month, day);
d = cal.getTime();
Run Code Online (Sandbox Code Playgroud)
现在,显然弃用警告本身并不是一个问题,但你能想象如果这个构造函数被删除,数百万的LOC会在痛苦中哭泣吗?
在我简短的基准测试中,后者需要大约50%的时间来执行.
java.util.Date(int,int,int)不建议使用构造函数.有没有办法像Java一样简单地设置日期?什么是不赞成的方式?
Date date = new Date(2015, 3, 2);
Run Code Online (Sandbox Code Playgroud) 我试图将日期字符串格式化为Date,然后从中获取月/日:
String strDate="2013-05-15T10:00:00-07:00";
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss-z");
Date convertedDate = new Date();
try {
convertedDate = dateFormat.parse(strDate);
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat sdfmonth = new SimpleDateFormat("MM/dd");
String monthday= sdfmonth.format(convertedDate);
Run Code Online (Sandbox Code Playgroud)
但它返回我当前的月/日,即5/18。怎么了?
众所周知的弃用问题导致我出现问题.以下行"到期=新日期(dt);" 是目标脚本.详细解释我成功习惯了
Date expiry = null;
String dt;
if(!(dt=str.nextToken()).equals("null"));
{
expiry = new Date(dt);
}
Run Code Online (Sandbox Code Playgroud)
在scrips中使用这些行来从文件中读取cookie.是的,"日期"已弃用.我已经阅读了一些解决方案,但在纠正错误时仍然存在一系列错误.
什么是正确的"日期".我也在下面提供完整的脚本
package test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Date;
import java.util.StringTokenizer;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Reader {
public static void main(String[] args) {
System.setProperty ("webdriver.chrome.driver", "D:\\Selenium\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("http://www.gmail.com");
try{
File f = new File("browser.data");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine())!=null){
StringTokenizer str = new …Run Code Online (Sandbox Code Playgroud) 我正在开发现有的GWT应用程序。我看到这个警告
构造函数Date(int,int,int)已过时
由于GWT客户端不支持java.util.Calendar,因此我正在寻找如何替换此方法。
我想util.Date在Java中使用该类,但是当我尝试实例化一个Date对象时,我意识到我能理解的所有构造函数 - 简单的构造函数 - 都消失了.全部弃用.
谁能告诉我如何利用Date课程?
这是我的代码.
构造函数:
public Company(int id, String name, Date foundationDate) {
super();
this.id = id;
this.name = name;
this.foundationDate = foundationDate;
}
Run Code Online (Sandbox Code Playgroud)
识别TestClass:
Company[] companies = new Company[3];
companies[0] = new Company(1, "Sabanci", new Date(12,12,12));
Run Code Online (Sandbox Code Playgroud) java ×8
date ×7
android ×2
calendar ×2
deprecated ×2
cookies ×1
datetime ×1
gwt ×1
java-8 ×1
java-time ×1
threetenabp ×1
threetenbp ×1
webdriver ×1