标签: simpledateformat

使用ThreadLocal进行日期转换

我要求将传入日期字符串格式"20130212"(YYYYMMDD)转换为12/02/2013(DD/MM/YYYY)

使用ThreadLocal.我知道一种方法可以做到这一点,没有ThreadLocal.谁能帮我?

转换没有ThreadLocal:

    final SimpleDateFormat format2 = new SimpleDateFormat("MM/dd/yyyy");
    final SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
    final Date date = format1.parse(tradeDate);
    final Date formattedDate = format2.parse(format2.format(date));
Run Code Online (Sandbox Code Playgroud)

java date-conversion simpledateformat

8
推荐指数
2
解决办法
1万
查看次数

使用yyyy-MM-dd hh:mm:ss格式解析日期的意外差异

我运行下面的java代码来获得时差.

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;


public class Test 
{
    public static SimpleDateFormat simpleDateFormat= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    public static Date date1,date2;
    public static long diff; 
    public static String TAG ="DateConversion";
    public static Calendar cal1,cal2;

    public static void main(String a[])
    {
        checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 11:15:00");
        checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 12:15:00");
        checkTimeDifference("2013-10-30 10:15:00", "2013-10-30 13:15:00");
    }

    public static  void checkTimeDifference(String strDate,String checkDate)
    {
        try 
        {
            simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
            date1    = simpleDateFormat.parse(strDate);
            date2    = simpleDateFormat.parse(checkDate);

            //in milliseconds
            diff = date2.getTime() - date1.getTime();
            System.out.println("Difference …
Run Code Online (Sandbox Code Playgroud)

java simpledateformat

8
推荐指数
1
解决办法
1128
查看次数

时区,日历和SimpleDateFormat的奇怪问题

我们考虑以下代码:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.US);
long start = sdf.parse("10:30:00 30/09/2009").getTime();
long end = sdf.parse("10:30:00 30/10/2009").getTime();

Calendar c = Calendar.getInstance(Locale.US);
c.setTimeInMillis(start);
System.out.println("Start = " + c.getTime());
c.setTimeInMillis(end);
System.out.println("  End = " + c.getTime());
Run Code Online (Sandbox Code Playgroud)

运行此代码段时,我有以下输出:

Start = Wed Sep 30 10:30:00 CEST 2009
  End = Fri Oct 30 10:30:00 CET 2009
Run Code Online (Sandbox Code Playgroud)

为什么我会得到不同的时区?

请注意,如果我在8月设置第一个日期而在9月设置第二个日期,则输出将在两种情况下显示相同的时区:

long start = sdf.parse("10:30:00 30/08/2009").getTime();
long end = sdf.parse("10:30:00 30/09/2009").getTime();
Run Code Online (Sandbox Code Playgroud)

将显示:

Start = Sun Aug 30 10:30:00 CEST 2009
  End = Wed Sep 30 10:30:00 CEST …
Run Code Online (Sandbox Code Playgroud)

java calendar date simpledateformat

7
推荐指数
2
解决办法
2万
查看次数

使用SimpleDateFormat,Java解析日期不正确

我需要使用日期模式"yyyy-MM-dd"从输入字符串解析日期,如果日期将以任何其他格式出现,则抛出错误.

这是我解析日期的代码段:

private void validateDate() throws MyException {
  Date parsedDate;
  String DATE_FORMAT = "yyyy-MM-dd";
  try{
    parsedDate = new SimpleDateFormat(DATE_FORMAT).parse(getMyDate());
    System.out.println(parsedDate);
  } catch (ParseException e) {
    throw new MyException(“Error occurred while processing date:” + getMyDate());
  }

}
Run Code Online (Sandbox Code Playgroud)

当我在myDate中输入像"2011-06-12"这样的字符串时,我会得到输出"Thu Sep 29 00:00:00 EEST 2011",这很好.

当我发送一个不正确的字符串,如"2011-0612"时,我收到错误的预期.

当我试图传递一个仍然有两个"连字符"但字符数错误的字符串时,问题就开始了.例:

输入字符串"2011-06-1211"结果"Tue Sep 23 00:00:00 EEST 2014".

输入字符串"2011-1106-12"结果"Mon Feb 12 00:00:00 EET 2103".

我无法更改字符串日期的输入格式.

我怎么能避免呢?

java parse-error simpledateformat

7
推荐指数
1
解决办法
6333
查看次数

从String中提取时区

我知道有关于此的几个问题.但是我遇到了特定日期模式的问题.这是一个例子:

20130401100000[-03:EST]
Run Code Online (Sandbox Code Playgroud)

我跟你说话是-03因为根据SimpleDateFormat文件它应该有4位数.我得到的最接近的模式是:

yyyyMMddHHmmss'['Z':'z']'
Run Code Online (Sandbox Code Playgroud)

但由于2位数它只是不起作用.这是我用于测试的代码示例:

public static void main(String[] args) throws ParseException {
    String input = "20130401100000[-03:EST]";

    DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss'['Z':'z']'");
    df.setTimeZone(TimeZone.getTimeZone("GMT"));    

    System.out.println(df.format(new Date()));
    System.out.println(df.parse(input));
}
Run Code Online (Sandbox Code Playgroud)

当我打印new Date()我得到这个:

20130528155734[+0000:GMT]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试解析时,input我得到以下异常:

Exception in thread "main" java.text.ParseException: Unparseable date: "20130401100000[-03:EST]"
at java.text.DateFormat.parse(DateFormat.java:337)
at Teste.main(Teste.java:17)
Run Code Online (Sandbox Code Playgroud)

有谁知道我怎么能用正确的解析input成一个?DateTimeZone

java timezone simpledateformat

7
推荐指数
1
解决办法
1260
查看次数

计算两次android之间的差异

我正在开发和Android应用程序,我需要计算两次之间的差异.我需要计算24小时的时差,以及两天的时间差(例如今天下午5点到明天上午9点).

我尝试了以下代码,计算仅适用于24小时的差异,

String dateStart = "08:00:00";
String dateStop = "13:00:00";

//HH converts hour in 24 hours format (0-23), day calculation
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");

Date d1 = null;
Date d2 = null;

try 
{
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);

    //in milliseconds
    long diff = d2.getTime() - d1.getTime();
    long diffHours = diff / (60 * 60 * 1000) % 24;
    Log.e("test",diffHours + " hours, ");
}
catch (Exception e) 
{
    // TODO: handle exception
} 
Run Code Online (Sandbox Code Playgroud)

java time android date simpledateformat

7
推荐指数
3
解决办法
3万
查看次数

在java中获取一周的第一个日期

我想获取一周的第一个日期.

我的输入将是像2014年7月26日的字符串类型".

我需要获得上述日期(2014年7月26日)的第一周日期.

我需要MM/dd/YYYY格式的输出日期.

基本上我需要输出为07/21/2014.

请给我java程序.我已经做到了这一点

SimpleDateFormat formatter1 = new SimpleDateFormat("MM/dd/yy");
String date ="07/26/2014";
    Date Currentdate = formatter1.parse(date);
    int currentday=Currentdate.getDay();


        Calendar calendar = Calendar.getInstance();
        calendar.setTime(Currentdate);
        int startDay=currentday-calendar.getFirstDayOfWeek();
        Currentdate.setDate(contacteddate.getDate()-startDay);
        System.out.println(contacteddate.getDate());
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码只给我一个日期..我需要在"MM/dd/YYYY"中的日期和月份和年份请帮助

java datetime calendar date simpledateformat

7
推荐指数
2
解决办法
2281
查看次数

无法解释的希腊日期 - SimpleDateFormat

我试图读取一个代表希腊日期时间的字符串(如"28Μαρτίου2014,14:00")使用SimpleDateFormat,但它会引发java.text.ParseException: Unparseable date: "28 ??????? 2014, 14:00"错误.

这是一个示例代码:

Locale locale = new Locale("el-GR");
SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy, HH:mm", locale);
try {
     sDate = (Date) formatter.parse("28 ??????? 2014, 14:00");
 } catch (ParseException ex) {
     ex.printStackTrace();
 }
Run Code Online (Sandbox Code Playgroud)

我也试过locales el和el_GR,但没有运气.

有什么建议?

java locale simpledateformat

7
推荐指数
1
解决办法
943
查看次数

SimpleDateFormat无法解析超过4位数的毫秒数

我想解析一个时间戳,就像这样 - "2016-03-16 01:14:21.6739".但是当我使用它SimpleDateFormat来解析它时,我发现它输出了一个不正确的解析值.它将隐藏6739毫秒到6秒,剩下739毫秒.它将日期转换为此格式 - Wed Mar 16 01:14:27 PDT 2016.为什么秒部分从21秒变为27秒(增加6秒?).以下是我的代码片段:

final SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
String parsedate="2016-03-16 01:14:21.6739";
try {
    Date outputdate = sf.parse(parsedate);
    String newdate = outputdate.toString();  //==output date is: Wed Mar 16 01:14:27 PDT 2016 
    System.out.println(newdate);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

java simpledateformat

7
推荐指数
2
解决办法
1万
查看次数

Java时间模式中'yy'和'YY'之间的区别

从文档SimpleDateTimePattern来看,yy应该与YY.

今天是Dec 30, 2019,现在我们得到YY今天是20yy今天是19。Java Time PatternyyYYJava Time Pattern之间有什么区别?

java time simpledateformat

7
推荐指数
1
解决办法
2895
查看次数