为什么解析'23:00 PM'并SimpleDateFormat("hh:mm aa")返回上午11点?
我正在尝试将毫秒时间(自1970年1月1日以来的毫秒)转换为Java中的UTC时间.我已经看到很多其他问题利用SimpleDateFormat来改变时区,但我不知道如何把时间花在SimpleDateFormat上,到目前为止我只想出如何将它变成字符串或日期.
因此,例如,如果我的初始时间值是1427723278405,我可以使用其中任何一个String date = new SimpleDateFormat("MMM dd hh:mm:ss z yyyy", Locale.ENGLISH).format(new Date (epoch));或者Date d = new Date(epoch);但是每当我尝试将其更改为SimpleDateFormat以执行此类操作时遇到问题因为我是不确定将Date或String转换为DateFormat并更改时区的方法.
如果有人有办法做到这一点,我将非常感谢帮助,谢谢!
我正在使用阿拉伯语进行网络监控项目,我想像这样转换字符串日期:
??????? 24 ????? 2017 - 15:00
Run Code Online (Sandbox Code Playgroud)
到Java 8日期对象.我怎样才能做到这一点?
我真的在这个问题上摸不着头脑.我一直在使用SimpleDateFormat没有麻烦的s,但是现在,使用SimpleDateFormat来解析日期(仅有时)只是完全错误.
特别:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = sdf.parse("2009-08-19 12:00:00");
System.out.print(date.toString());
Run Code Online (Sandbox Code Playgroud)
打印字符串Wed Aug 19 00:00:00 EDT 2009.有没有搞错? - 它甚至不会一直解析错误的日期!
更新:这很好地修复了它.你不知道吗,在其他一些地方也被误用了.得爱调试其他人的代码:)
我的字符串值为08:03:10 pm,我想把它转换成时间.我怎么能用Java做到这一点?
这是一个例子:
public MyDate() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/d");
sdf.setLenient(false);
String t1 = "2011/12/12aaa";
System.out.println(sdf.parse(t1));
}
Run Code Online (Sandbox Code Playgroud)
2011/12/12aaa不是有效的日期字符串.但是,该功能打印"2011年12月12日00:00:00 PST",并且不会抛出ParseException.
谁能告诉我如何让SimpleDateFormat将"2011/12/12aaa"视为无效的日期字符串并抛出异常?
当我尝试将字符串解析为日历时,我收到了最奇怪的错误.它似乎弄乱了我用来设置结果日历时间的Date对象.错误非常不一致(或者我看不到任何逻辑).谁能指出我可能做错了什么?
public class caltest{
public static final SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss.SSS");
public static void main(String[] args) {
String date1 = "1992-03-11 12:00:12.123";
String date2 = "1993-03-11 12:00:12.123";
String date3 = "1994-03-11 12:00:12.123";
String date4 = "1995-03-11 12:00:12.123";
parseStringAsCalendar(date1);
parseStringAsCalendar(date2);
parseStringAsCalendar(date3);
parseStringAsCalendar(date4);
}
public static String calendarToString(Calendar cal) {
return sdf.format(cal.getTime());
}
public static Calendar parseStringAsCalendar(String s) {
Date time = null;
try {
time = sdf.parse(s);
} catch (ParseException e) {
System.out.println("Exception");
e.printStackTrace();
}
System.out.println(time.toString());
GregorianCalendar ret = …Run Code Online (Sandbox Code Playgroud) 我有两个Calendar对象,我想检查它们之间的区别,以小时为单位.
这是第一个 Calendar
Calendar c1 = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
第二个 Calendar
Calendar c2 = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
c2.setTime(sdf.parse("Sun Feb 22 20:00:00 CET 2015"));
Run Code Online (Sandbox Code Playgroud)
现在让我们说c1.getTime()的是:Fri Feb 20 20:00:00 CET 2015和c2.getTime()是Sun Feb 22 20:00:00 CET 2015.
那么是否有任何代码可以Calendar在几小时内返回第一个和第二个之间的差异?在我的情况下它应该返回48.
Java的SimpleDateFormat类(如此类似"EEE, MMM d, ''yy")中定义的日期时间格式字符串的语法是原始的Java发明,还是基于ICU或CLDR的其他语法定义?
是否有人知道将SimpleDateFormat语法与其他定义进行比较的工作?
这段代码有什么问题?我正在尝试解析年份和月份之间为0的日期格式.
import java.text.SimpleDateFormat;
class Main {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("yyyy'0'MMdd");
try {
Date date = format.parse("201600101");
System.out.println(date);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出Unparseable日期:"201600101".如果我将'0'更改为除数字之外的任何内容[例如'X'和format.parse("2016X0101")],这将起作用.
java ×10
simpledateformat ×10
date ×5
datetime ×3
android ×1
arabic ×1
calendar ×1
date-parsing ×1
parsing ×1