2013-03-05 58 views
4

我用这个方法来获取本地时间:获取在Java(日历)当地时间

Calendar cal = Calendar.getInstance(); 

String time= new SimpleDateFormat("dd MMM yyyy HH:mm:ss").format(cal.getTime()); 

我的问题是,下午这个方法让我回去例如,“11:15”,但它是“23 :15“已经。 我希望我的desc不会令人困惑。

我想回复下午的值,例如:12:MM,13:MM,14:MM ..等到23:MM。 。 。

我应该改变什么?

+0

一些相关的阅读材料:http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time – 2013-03-05 08:02:52

+1

看来你正在使用0-23之间的小时值正确的标志。有关详细信息,请参阅此处:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.htm 是否有可能您的问题在代码中较低的地方?如何使用'时间'? – Barett 2015-08-10 19:48:32

回答

4
  1. 你确定PC上的时间或者你正在使用的程序是正确的?

  2. 尝试使用公历:

    new GregorianCalendar().getTime() 
    
  3. 请确保您有这些进口:

    import java.util.Date; 
    import java.util.GregorianCalendar; 
    

希望有所帮助。

1

我想你会得到混合了时区。获取与您的系统的默认语言环境的日历:

Calendar cal = Calendar.getInstance(Locale.getDefault()); 
+0

我尝试这个,但我必须等下午。 我会接受你的答案,如果它确定 – 2013-03-05 08:01:22

+0

@AdamVarhegyi你可以简单地改变时间,现在检查它:) – Maroun 2013-03-05 08:07:44

2

你可以尝试这样的事情:

Date date=new Date();  
System.out.println(new SimpleDateFormat("yyyy.MM.dd HH:mm").format(date)); 

输出例如:

2013年3月5日22:07

+0

嗯。这似乎与OP已经做的一样。 – Barett 2015-08-10 19:49:07

+0

@Barett不是真的..再看看。 – Maroun 2015-08-11 08:13:50

+1

如果您避免说日期的构造是问题(第二次),那么在您的答案中提及这一点会很有帮助。不知道为什么所有的蒙面语言;这不是苏格拉底溢出。由于他认为格式化是问题,所以OP很困惑。除了标点符号外,您的格式也完全一样。 – Barett 2015-08-11 16:08:27

0

您正在使用HH标志。尝试使用kk标志。

例如,kk:mm而不是HH:mm

+0

这并没有提供一个问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 – 2015-08-10 17:52:32

+0

@shekharsuman我不同意。虽然这是不正确的,但这是一个完全有效的简短答案。 – Barett 2015-08-10 19:43:18

+0

迈克,'HH'应该返回0-23的值,这是OP想要的。 'kk'返回值1-24。按照https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.htm – Barett 2015-08-10 19:46:56