我有一个字符串20130510T202132Z,我想转换成一个DateTime对象.
我一直在尝试使用Joda来实现这一点,但我无法让它工作.我已经找到了我能找到的关于这个主题的每一个链接 - 并且使用了格式化程序,但它根本就没有用完.
做这个的最好方式是什么?
假设您有一个Date对象,其中包含日/月和年值.
我想知道它是哪个日期.
我的意思是,就像3月5日那样是一年中的第65个.或者像1月15日是15日.
请不要joda时间.(未在当前项目中使用.)
SimpleDateFormat format =new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
format.setTimeZone(TimeZone.getTimeZone("GMT+05:30"));
try {
long diff2=format.parse(accidentReports.getAccidentDate());
}
Run Code Online (Sandbox Code Playgroud)
获取此输出 :: Thu Dec 17 15:37:43 GMT+05:30 5
我需要在我的表格中找到平衡月份。我以数字形式填写,但我需要字母形式,例如“一月,二月”。请帮忙
int lastpaid = Integer.parseInt(s); **//this is i am getting from my database**
int currentmonth = m; **// this is from georigian Calender**
int[] arr = new int[12];
int[] month = new int[12];
int count = 0;
for(int j=currentmonth;j>=lastpaid+1;j--)
{
arr[count] = j;
count++;
}
for(int k : arr)
{
if(k == 0)
{
break;
}
month[count] = k;
}
Run Code Online (Sandbox Code Playgroud) 以下是抛出异常的代码片段:
SimpleDateformat dateFormatter = new SimpleDateFormat("yyyyMMddHHmm");
Date date = dateFormatter.parse("201710010200");
Run Code Online (Sandbox Code Playgroud)
上面的代码在凌晨2点之后的所有日期都抛出了异常.它一直运行到凌晨01:30
DayLight节省时间已配置(我正在使用Australia/Sydney时区).
之后,我可以看到3:00 AM的日志在凌晨2:00到凌晨3:00之间的日志也没有记录.
日志:
01 Oct 03:02:01错误:无法解析日期:"201710010200"
引起:java.text.ParseException:无法解析的日期:java.text.DateFormat.parse中的"201710010200"(DateFormat.java:357)
什么可以解决日期字符串"201710010200"没有被解析的问题,并指定了正确的日期格式?
我有两个日期:
Start Date: 2017-01-15
End Date: 2017-05-27
Run Code Online (Sandbox Code Playgroud)
现在我想找到这两个日期之间的整月。所以结果应该是:
Feb-2017
Mar-2017
Apr-2017
Run Code Online (Sandbox Code Playgroud)
一月不包括在结果中,因为开始日期从月中开始,五月不包括在结果中,因为结束日期不包括整个五月。
我怎样才能用 Java 实现这一点?
我试过做这样的事情:
String date1 = "2015-01-15";
String date2 = "2015-05-27";
DateFormat formater1 = new SimpleDateFormat("MMM-yyyy");
DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
try {
startCalendar.setTime(formater.parse(date1));
endCalendar.setTime(formater.parse(date2));
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("startDate:" + startCalendar.getTime());
System.out.println("endCalendar:" + endCalendar.getTime());
while (startCalendar.before(endCalendar)) {
// add one month to date per loop
String date = formater1.format(startCalendar.getTime()).toUpperCase();
System.out.println(date);
startCalendar.add(Calendar.MONTH, 1);
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何从结果中排除 Jan …
请考虑以下代码段.
TimeZone tz = TimeZone.getTimeZone("GMT");
System.out.println(tz);
Calendar cal = Calendar.getInstance();
cal.set(2017, Calendar.DECEMBER, 25);
System.out.println("before setting time zone: " + cal.getTime());
cal.setTimeZone(tz);
System.out.println("after setting time zone: " + cal.getTime());
Run Code Online (Sandbox Code Playgroud)
结果如下:
sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
before setting time zone: Mon Dec 25 22:39:53 EST 2017
after setting time zone: Mon Dec 25 22:39:53 EST 2017
Run Code Online (Sandbox Code Playgroud)
在时区更改后,为什么日期的打印输出仍显示EST?不应该是GMT吗?
我现在在 +3 时区。
现在 UTC 时间是 16:30 而在我这里是 19:30
我发现了一个时区问题 America/Los_Angeles
理论上是 -8 (rawOffset) 我得到了意想不到的时间。我预计如果在我的地方 20:00,那么在这个 timezoe 时间应该少 11 小时(8+3),但在现实生活中,由于夏令时,它比我的地方少 10 小时。
那么如果America/Los_Angeles我的代码中有zoneId ,我怎么能得到 -7 偏移量呢?
TimeZone.getTimeZone("America/Los_Angeles").getRawOffset()/(3600*1000)
Run Code Online (Sandbox Code Playgroud)
返回 -8 但现在它与 UTC 不同 7 小时
我试图将字符串转换为日期,我希望该日期为这种格式'yyyy-MM-d HH:mm:ss'而我没有如何在字符串中获取此格式我的问题是我想要获取日期以上格式不是字符串而是'日期'?
我这样做
for(int k=0;k<12;k++)//for the months
{
//i have added if condtion for the months with 31 and 30 and 28 days
Calendar dateFromCal = Calendar.getInstance();
dateFromCal.setTime(date);
dateFromCal.set(year, k, 1, 0, 0, 0);
Calendar dateToCal = Calendar.getInstance();
dateToCal.setTime(date);
dateToCal.set(year, k, 31, 23, 59, 59);
//i have set the date format as 'yyyy:MM:dd HH:mm:ss'
dateFrom = dateFormat.format(dateFromCal.getTime());
dateTo = dateFormat.format(dateToCal.getTime());
fromdate = (Date)dateFormat.parse(dateFrom);
todate = (Date)dateFormat.parse(dateTo);
}
Run Code Online (Sandbox Code Playgroud)
通过使用上面的代码我得到以下格式的日期
Sat Nov 01 00:00:00 GMT 2014
Run Code Online (Sandbox Code Playgroud)
但我希望日期格式为
2014-11-01 00:00:00
Run Code Online (Sandbox Code Playgroud)
注意:我希望此结果为Date而不是String
请给我解决方案谢谢....
如何在Java/Scala中将时间戳(以微秒为单位)转换为日期.我的目标是比较两个时间戳并找出它们之间的差异.我正在使用java 8和示例Timestamp字符串是1474457086337977.我想将其转换为Date或Timestamp实例.