0

美好的一天可爱的人

请大哥帮忙。好吧,我是 Visual Basic 的大师,但在 Java 中,我宁愿不说。

在VB中,这是我的方法:

  1. System.DateTime.Now.ToLongTimeString()
  2. System.DateTime.Now.ToString() + "/" + System.DateTime.Now.Month.ToString() + "/" + System.DateTime.Now.Year.ToString()

第一种方法将返回确切的时间,例如 = 12:08:36 AM

第二种方法将返回确切的日期,例如 = 2012/09/26

我想得到完全相同的结果,但使用 java.How 我该怎么做。

哦,提前谢谢。

4

3 回答 3

3

在 .NET 中,DateTime.Now为您提供本地时区的本地日期和时间。

如果你new Date()在Java中使用或类似的,它会给你一个不知道时区的值。要考虑时区,您应该创建一个Calendar具有正确时区的字符串,或者如果您想创建一个应该使用的适当字符串SimpleDateFormat- 再次,在格式化之前设置为正确的时区。例如:

SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd", Locale.US);
format.setTimeZone(...); // Whichever time zone you want
String text = format.format(new Date()); // "now"

另请注意,Joda Time是一个比内置CalendarDate类更好的日期/时间 Java API。

最后,您在 .NET 中的第二段示例代码有问题 - 您应该只评估DateTime.Now 一次;理想情况下只是传入一个格式字符串,例如DateTime.Now.ToString("yyyy/MM/dd"). 但是,即使您想将每个位单独转换为字符串,您也可以将值一次提取到局部变量,然后重用它。否则,如果您在午夜左右执行该代码,则日期可能会更改 - 例如,如果您在 2013 年初之前执行它,您最终可能会得到一个字符串“2012/12/1”或“2012/1 /1" 这两个都不正确。

于 2012-09-26T09:49:42.513 回答
1

使用java.text.SimpleDateFormat类格式化日期new java.util.Date()并将创建实例系统日期默认值。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat dateFormat1 = new SimpleDateFormat("hh:mm:ss a");
System.out.println(dateFormat.format(new Date)); //2012/09/26
System.out.println(dateFormat1.format(new Date)); //12:08:36 AM
于 2012-09-26T09:50:40.517 回答
0

要获取表示当前日期的对象,您可以使用 just new Date(),格式化它,使用SimpleDateFormat

于 2012-09-26T09:47:41.763 回答