gsi*_*dze 1 c# java datetime date
我需要在C#中使用的那种格式
DateTime.Now.ToString("o").样品返回日期DateTime.Now.ToString("o")是
2016-03-10T11:24:59.7862749 + 04:00
然后在sql中插入为
2016-03-10 11:24:59.786
我正在尝试从java插入相同的日期格式.我用它:
TimeZone tz = TimeZone.getTimeZone("UTC");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ");
df.setTimeZone(tz);
String nowAsISO = df.format(new Date());
Run Code Online (Sandbox Code Playgroud)
它会返回这个
2016-03-10T07:29 + 0000
由于这种格式,它出错了.如何将格式更改为我想要的格式?
对于Java 7,您可以使用:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
System.out.println(df.format(new Date()));
Run Code Online (Sandbox Code Playgroud)
这使用了模式符号XXX,它也会在偏移内打印冒号.但是,对于Java-6,不提供此功能.并且精度始终限制在毫秒级.
对于Java-8,您还可以使用:
DateTimeFormatter dtf = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
System.out.println(OffsetDateTime.now().format(dtf)); // 2016-03-10T08:46:44.849+01:00
Run Code Online (Sandbox Code Playgroud)
如果有这样的时钟(从Java-9开始),这可以实现纳秒精度.
对于Java-6,要么应用基于hack的hack,SimpleDateFormat要么使用外部库:
// Java-6 (SimpleDateFormat)
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String text = sdf.format(new Date());
text = text.substring(0, text.length() - 2) + ":" + text.substring(text.length() - 2);
System.out.println(text);
// Joda-Time
DateTime now = DateTime.now();
System.out.println(DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ").print(now));
// Time4J
Moment now = SystemClock.currentMoment();
System.out.println(Iso8601Format.EXTENDED_DATE_TIME_OFFSET.withStdTimezone().format(now));
Run Code Online (Sandbox Code Playgroud)