Strange result of SimpleDateFormat.parse()

Hi,
I'm having trouble with the parse data function as it does not return the correct hour.
Here is what I'm doing:
Date nullDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse("1900-01-01T00:00:00-0000");I would now expect nullDate to be Mon Jan 01 00:00:00 CET 1900
But instead, it is Mon Jan 01 00:09:21 CET 1900
Personally I cannot think of a reason why the time is not 0.
Any ideas?

I don't see the problem you see. What version of Java on what OS and in what time zone?
P.S. I would certainly set the time zone for the parser i.e.
       SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        parser.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date nullDate = parser.parse("1900-01-01T00:00:00-0000");
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
        System.out.println(formatter.format(nullDate));On my Ubuntu 10.04 using JDK 1.6.0_20 in London (currently GMT) time zone I get
1900-01-01 00:00:00 GMT

Similar Messages

  • Strange problem with SimpleDateFormat.parse method

    I got something strange with this method.
    String pattern = "yyyy/MM/dd";
    String mydate = "2007/00/10";
    SimpleDateFormat formatter = new SimpleDateFormat(pattern);
    Date newdate = formatter.parse(mydate);
    I get "2006/12/10"
    is this correct.

    dongyisu wrote:
    and there no exception get thrown outYes it does. I ran this:
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class DateFormatTest
       public static final String DEFAULT_DATE_FORMAT = "yyyy/MM/dd";
       public static void main(String[] args)
          DateFormat formatter = new SimpleDateFormat(DEFAULT_DATE_FORMAT);
          formatter.setLenient(false);
          for (int i = 0; i < args.length; ++i)
             try
                Date date = formatter.parse(args);
    System.out.println("input: " + args[i] + " date: " + date);
    catch (ParseException e)
    System.err.println(args[i] + " is not a valid date");
    and got this when I input "2007/00/10":
    com.intellij.rt.execution.application.AppMain DateFormatTest 2007/00/10
    2007/00/10 is not a valid date
    Process finished with exit code 0%

  • Strange result from insert into...select query

    Hello guys,
    I need your preciuos help for a question maybe simple, but that I can't explain by myself!
    I have a query of "insert into...select" that, as I have explained in the title, returns a strange result. In facts, If I execute ONLY the SELECT statement the query returns the expected result (so 2 rows); instead If I execute the entire statement, that is the "insert into...select", the query returns 0 rows inserted!!
    Following an example of the query:
    INSERT
    INTO TITOLI_ORI
    COD_TITOLO_RICCONS ,
    D_ESTRAZIONE ,
    COD_SOCIETA ,
    COD_PIANO_CONTABILE ,
    COD_CONTO_CONTABILE ,
    COD_RUBRICATO_STATISTICO_1 ,
    COD_NDG ,
    NUM_ESEGUITO ,
    CUR_IMPORTO_RICCONS ,
    CUR_IMPORTO_BICO ,
    FLG_MODIFICATO ,
    CUR_NON_ASSEGNATO ,
    FLG_QUOTATO ,
    COD_CATEG ,
    TIP_COPERTURA ,
    TIPTAS_TITOLO
    SELECT NEWID,
    '28-feb-2111',
    COD_SOCIETA,
    COD_PIANO_CONTABILE,
    COD_CONTO_CONTABILE,
    COD_RUBRICATO_STATISTICO_1,
    COD_NDG,
    NUM_ESEGUITO,
    CUR_VAL_IMPEGNI,
    'ABC' as CUR_IMPORTO_BICO,
    0 as FLG_MODIFICATO,
    NULL as CUR_NON_ASSEGNATO,
    FLG_QUOTATO,
    COD_CATEG,
    TIP_COPERTURA,
    TIP_TASSO
    FROM
    (SELECT S.COD_SOC AS COD_SOCIETA,
    S.TIP_PIANO_CNTB AS COD_PIANO_CONTABILE,
    S.COD_CONTO_CNTB AS COD_CONTO_CONTABILE,
    S.COD_RUBR_STAT AS COD_RUBRICATO_STATISTICO_1,
    TRC.COD_RAGGR_IAS AS COD_RAGGRUPPAMENTO_IAS,
    TRC.COD_NDG AS COD_NDG,
    TRC.COD_ESEG AS NUM_ESEGUITO,
    CAST((TRC.IMP_PLUS_MINUS_VAL/TRC.IMP_CAMB) AS FLOAT) AS CUR_VAL_IMPEGNI,
    TRC.TIP_QUOTAZ AS FLG_QUOTATO,
    TRC.COD_CAT_TIT AS COD_CATEG,
    TIP_COP AS TIP_COPERTURA,
    T.TIP_TASSO AS TIP_TASSO
    FROM S_SLD_CNTB S
    INNER JOIN
    (SELECT DISTINCT COD_SOC,
    TIP_PIANO_CNTB,
    COD_CONTO_CNTB,
    COD_RUBR_STAT ,
    COD_INTER_TIT AS COD_INTER
    FROM S_COLLEG_CONTO_CNTB_TIT
    WHERE COD_SOC = 'ME'
    ) CCC
    ON S.COD_SOC = CCC.COD_SOC
    AND S.TIP_PIANO_CNTB = CCC.TIP_PIANO_CNTB
    AND S.COD_CONTO_CNTB = CCC.COD_CONTO_CNTB
    AND S.COD_RUBR_STAT = CCC.COD_RUBR_STAT
    INNER JOIN S_TIT_RICCONS TRC
    ON CCC.COD_INTER = TRC.COD_INTER_TIT
    AND CCC.COD_SOC = TRC.COD_SOC
    AND TRC.COD_RAGGR_IAS = RTRIM('VALUE1 ')
    AND TRC.COD_RAGGR_IAS NOT IN ('VALUE2')
    AND TRC.DES_TIP_SLD_TIT_RICCONS IN ('VALUE3')
    AND TRC.DES_MOV_TIT = RTRIM('VALUE4 ')
    AND TRC.COD_CAT_TIT = RTRIM('VALUE4 ')
    AND TRC.COD_INTER_TIT = RTRIM('VALUE5')
    AND '28-feb-2011' = TRC.DAT_RIF
    LEFT JOIN S_TIT T
    ON T.COD_INTER_TIT = TRC.COD_INTER_TIT
    AND T.COD_SOC = TRC.COD_SOC
    AND '28-feb-2011' = T.DAT_RIF
    INNER JOIN S_ANAG_SOGG AG
    ON TRC.COD_NDG = AG.COD_NDG
    AND AG.COD_SOC = TRC.COD_SOC
    AND '28-feb-2011' = AG.DAT_RIF
    WHERE S.DAT_RIF = '28-feb-2011'
    AND (S.FLG_ANULL_BICO = 0
    OR S.FLG_ANULL_BICO IS NULL)
    AND S.COD_SOC = 'V6'
    AND LENGTH(RTRIM(S.COD_CONTO_CNTB)) = 10
    AND S.TIP_PIANO_CNTB = 'V7'
    AND TRC.IMP_PLUS_MINUS_VAL < 0
    AND SUBSTR(S.COD_CONTO_CNTB,1,7) IN (RTRIM('VALUE8 '))
    Thanks a lot

    Right, I have executed this steps:
    - I have changed the query with the select count(*)
    - Changed the insert into with the select count(*)
    - Executed the insert into
    These are the result:
    SQL> select count(*) from TITOLI_ORI2;
    COUNT(*)
    1
    BUT:
    SQL> select * from TITOLI_ORI2;
    A
    0
    The insert into that I've modified is this:
    INSERT INTO bsc.TITOLI_ORI2
    select count(*)
    FROM
    (SELECT bsc.NEWID,
    TO_DATE('28-feb-2111','DD-MON-YYYY') as data,
    COD_SOCIETA,
    COD_PIANO_CONTABILE,
    COD_CONTO_CONTABILE,
    COD_RUBRICATO_STATISTICO_1,
    COD_NDG,
    NUM_ESEGUITO,
    CUR_VAL_IMPEGNI,
    'ABC' AS CUR_IMPORTO_BICO,
    0 AS FLG_MODIFICATO,
    NULL CUR_NON_ASSEGNATO,
    FLG_QUOTATO,
    COD_CATEG,
    TIP_COPERTURA,
    TIP_TASSO
    FROM
    (SELECT S.COD_SOC AS COD_SOCIETA,
    S.TIP_PIANO_CNTB AS COD_PIANO_CONTABILE,
    S.COD_CONTO_CNTB AS COD_CONTO_CONTABILE,
    S.COD_RUBR_STAT AS COD_RUBRICATO_STATISTICO_1,
    TRC.COD_RAGGR_IAS AS COD_RAGGRUPPAMENTO_IAS,
    TRC.COD_NDG AS COD_NDG,
    TRC.COD_ESEG AS NUM_ESEGUITO,
    CAST((TRC.IMP_PLUS_MINUS_VAL/TRC.IMP_CAMB) AS FLOAT) AS CUR_VAL_IMPEGNI,
    TRC.TIP_QUOTAZ AS FLG_QUOTATO,
    TRC.COD_CAT_TIT AS COD_CATEG,
    TIP_COP AS TIP_COPERTURA,
    T.TIP_TASSO AS TIP_TASSO
    FROM bsc.S_SLD_CNTB S
    INNER JOIN
    (SELECT DISTINCT COD_SOC,
    TIP_PIANO_CNTB,
    COD_CONTO_CNTB,
    COD_RUBR_STAT ,
    COD_INTER_TIT AS COD_INTER
    FROM bsc.S_COLLEG_CONTO_CNTB_TIT
    WHERE COD_SOC = 'ME'
    ) CCC
    ON S.COD_SOC = CCC.COD_SOC
    AND S.TIP_PIANO_CNTB = CCC.TIP_PIANO_CNTB
    AND S.COD_CONTO_CNTB = CCC.COD_CONTO_CNTB
    AND S.COD_RUBR_STAT = CCC.COD_RUBR_STAT
    INNER JOIN bsc.S_TIT_RICCONS TRC
    ON CCC.COD_INTER = TRC.COD_INTER_TIT
    AND CCC.COD_SOC = TRC.COD_SOC
    AND TRC.COD_RAGGR_IAS = RTRIM('HFT ')
    AND TRC.COD_RAGGR_IAS NOT IN ('GPO')
    AND TRC.DES_TIP_SLD_TIT_RICCONS IN ('DISPONIBILI')
    AND TRC.DES_MOV_TIT = RTRIM('CONSEGNARE ')
    AND TRC.COD_CAT_TIT = RTRIM('OBBLIGAZIONE ')
    AND TRC.COD_INTER_TIT = RTRIM('334058')
    AND '28-feb-2011' = TRC.DAT_RIF
    LEFT JOIN bsc.S_TIT T
    ON T.COD_INTER_TIT = TRC.COD_INTER_TIT
    AND T.COD_SOC = TRC.COD_SOC
    AND '28-feb-2011' = T.DAT_RIF
    INNER JOIN bsc.S_ANAG_SOGG AG
    ON TRC.COD_NDG = AG.COD_NDG
    AND AG.COD_SOC = TRC.COD_SOC
    AND '28-feb-2011' = AG.DAT_RIF
    WHERE S.DAT_RIF = '28-feb-2011'
    AND (S.FLG_ANULL_BICO = 0
    OR S.FLG_ANULL_BICO IS NULL)
    AND S.COD_SOC = 'ME'
    AND LENGTH(RTRIM(S.COD_CONTO_CNTB)) = 10
    AND S.TIP_PIANO_CNTB = 'IS'
    AND TRC.IMP_PLUS_MINUS_VAL < 0
    AND SUBSTR(S.COD_CONTO_CNTB,1,7) IN (RTRIM('P044C11 '))
    Another time the strange result returns!!
    And I've created the table TITOLI_ORI2 as create table TITOLI_ORI2 (a number); to contain the number result of the query.

  • Strange symbols appear on my desktop, producing even stranger results!

    Strange symbols appear on my desktop, producing even stranger results!

    These symbols are for short cuts. could be a command to move text insertion point to beginning of document or if you have been in system preferences keyboard and clicked on the modifier key and set one of the options it would be for setting cap lock. Don't know why you are showing a screen  shot of it. Have you clicked on it. Have you been doing any work with documents. You could go to disk utilities and repair permissions or do an pram reset. Command/Option?P/R while holding down the power button for three chimes and release.

  • Help - count function returns strange results

    hi everyone,
    here's my scenario: i'm trying to get the NUMBER OF REPORTS and NUMBER OF
    IMAGES GROUP BY MONTH from the two tables below.
    REPORT
    reportid(*primary key)
    date
    IMAGE
    reportid(*foreign key referring to report's table)
    image
    sample output:
    MONTH NO.OF REPORTS NO. OF IMAGES
    feb 01 10 9
    mar 01 12 8
    my SQL goes like this:
    select to_char(date, 'month-yy'),
    count(REPORT.reportid), count(IMAGE.reportid)
    from REPORT, IMAGE
    where REPORT.reportid = IMAGE.reportid
    group by to_char(date, 'month-yy')
    the above sql yielded strange results, number of images is equal to the number of reports, which is of course wrong! as one report may or may not contain one or more image.
    i dont know what's wrong with the above statement, but if i were to group it
    by REPORTID and DAY rather than MONTH, then amazingly it works! what's
    wrong with the count, why does it give me the same result if i group by
    MONTH.
    can anyone shed some light on this?

    try using the following example:
    Table TEST_REPORT
    RPTID RPTDATE
    1 02-JAN-01
    3 02-JAN-01
    2 02-JAN-01
    5 11-FEB-01
    6 11-FEB-01
    7 11-FEB-01
    Table TEST_IMAGE
    RPTID IM
    1 1
    2 1
    3 1
    SQL:
    select to_char(rptdate,'MON-YYYY'),
    sum(decode(a.rptid,null,0,1)) report_cnt,
    sum(decode(b.rptid,null,0,1)) image_cnt
    from test_report a, test_image b
    where a.rptid = b.rptid(+)
    group by to_char(rptdate,'MON-YYYY');
    <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica">quote:</font><HR>Originally posted by skcedric:
    hi everyone,
    here's my scenario: i'm trying to get the NUMBER OF REPORTS and NUMBER OF
    IMAGES GROUP BY MONTH from the two tables below.
    REPORT
    reportid(*primary key)
    date
    IMAGE
    reportid(*foreign key referring to report's table)
    image
    sample output:
    MONTH NO.OF REPORTS NO. OF IMAGES
    feb 01 10 9
    mar 01 12 8
    my SQL goes like this:
    select to_char(date, 'month-yy'),
    count(REPORT.reportid), count(IMAGE.reportid)
    from REPORT, IMAGE
    where REPORT.reportid = IMAGE.reportid
    group by to_char(date, 'month-yy')
    the above sql yielded strange results, number of images is equal to the number of reports, which is of course wrong! as one report may or may not contain one or more image.
    i dont know what's wrong with the above statement, but if i were to group it
    by REPORTID and DAY rather than MONTH, then amazingly it works! what's
    wrong with the count, why does it give me the same result if i group by
    MONTH.
    can anyone shed some light on this? <HR></BLOCKQUOTE>
    null

  • Strange result about regular expressions

    Hello everybody,
    I write these codes to try regular expressions in Java, but there are some strang results. I read the reference like Sun Java Tutorials. however, I cann't find the problem.
    Environnement:
    WindowsXP Home + NetBeans IDE 5.0 + JDK 1.5
    Input String:
    "I write these codes to try regular expressions in Java, but it doesn't work. I read some reference like Sun Java Tutorials. Then, always cann't find the problem. Could you help me? Thanks."
    My codes:
    public static void main(String[] args) throws Exception, IOException {
    P.rintln("Let's go!");
    Date start = new Date();
    if(args.length != 1) {
    P.rintln("Input Error! Input format: java javaclass [directory path]");
    System.exit(0);
    StringBuffer sb = new StringBuffer();
    String input = TextFile.read(args[0]);
    sb = addSectionEelement(input, "re");
    P.rintln(sb.toString());
    P.rintln("Ok, it's over");
    Date end = new Date();
    System.out.println("It spends " + (end.getTime() - start.getTime()) + " ms.");
    public static StringBuffer addSectionEelement(String input, String regex) {
    Matcher m = Pattern.compile(regex).matcher(input);
    StringBuffer sb = new StringBuffer();
    int count = 0;
    while(m.find()) {
    count++;
    P.rintln(m.group());
    P.rintln("Found " + count + " fois.");
    return sb;
    Output:
    run:
    Let's go!
    Found 0 fois.
    Ok, it's over
    It spends 16 ms.
    BUILD SUCCESSFUL (total time: 0 seconds)
    However if I change the Bold line by
    sb = addSectionEelement(input, "r");
    The resultats become:
    run:
    Let's go!
    r
    r
    r
    r
    r
    r
    r
    r
    r
    r
    r
    Found 11 fois.
    Ok, it's over
    It spends 15 ms.
    BUILD SUCCESSFUL (total time: 0 seconds)
    I have no idea about it. And you?
    Thanks

    Hi guys,
    I re-examine the codes. In fact, it's the problem of encodings of the input file.
    See u

  • Strange results

    Hi guys,
    Sorry to ask such a simple question but I can't seem to work out why Im get strange results when I do the following:
    double t = 1564654654 / 1000000000;
           System.out.println(t);The result I get is 1.0 but I should get 1.564654654
    Any help would be great
    Many thanks
    Alex

    When you divide an int by an int, you get an int. Then you assign the int value to a double.
    Either use the cast as posted previously, or use a decimal point with one of the numbers (which will cause Java to handle it as a double.)

  • Strange results with Insert statement having select query

    Hi all,
    I am facing a strange issue with Insert statement based on a select query having multiple joins.
    DB- Oracle 10g
    Following is the layout of my query -
    Insert into Table X
    Select distinct Col1, Col2, Col3, Col4, Function(Col 5) from Table A, B
    where trunc(updated_date) > = trunc(sysdate-3)
    and join conditions for A, B
    Union
    Select Col1, Col2, Col3, Col4, Function(Col 5) from Table C, D
    trunc(updated_date) > = trunc(sysdate-3)
    and join conditions for C, D
    Union
    .... till 4 unions. all tables are residing in the local Database and not having records more than 50,000.
    If I execute above insert in a DBMS job, it results into suppose 50 records where as if I execute the select query it gives 56 records.
    We observed following things-
    a) no issue with size of tablespace
    b) no error while inserting
    c) since query takes lot of time so we have not used Cursor and PLSQL block for inserting.
    d) this discrepancy in number of records happens frequently but not everytime.
    e) examined the records left out from the insert, there we couldn't find any specific pattern.
    f) there is no constraint on the table X in which we are trying to insert. Also tables A, B, C....
    I went through this thread -SQL insert with select statement having strange results but mainly users are having either DB Links or comparison of literal dates, in my case there is none.
    Can somebody explain why is the discrepancy and what is the solution for it.
    Or atleast some pointers how to proceed with the analysis.
    Edited by: Pramod Verma on Mar 5, 2013 4:59 AM
    Updated query and added more details

    >
    Since I am using Trunc() in the where clause so timing should not matter much. Also I manually ruled out records which were updated after the job run.
    >
    The first rule of troubleshooting is to not let your personal opinion get in the way of finding out what is wrong.
    Actually this code, and the process it represents, is the most likely CAUSE of the problem.
    >
    where trunc(updated_date) > = trunc(sysdate-3)
    >
    You CANNOT reliably use columns like UPDATED_DATE to select records for processing. Your process is flawed.
    The value of that column is NOT the date/time that the data was actually committed; it is the date/time that the row was populated.
    If you insert a row into a table right now, using SYSDATE (8am on 3/5/2013) and don't commit that row until April your process will NEVER see that 3/5/2013 date until April.
    Here is the more typical scenario that I see all the time.
    1. Data is inserted/updated all day long on 3/4/2013.
    2. A column, for example UPDATED_DATE is given a value of SYSDATE (3/4/2013) in a query or by a trigger on the table.
    3. The insert/update query takes place at 11:55 PM - so the SYSDATE values are for THE DAY THE QUERY BEGAN
    4. The data pull begins at 12:05 am (on 3/5/2013 - just after midnight)
    5. The transaction is COMMITTED at 12:10 AM (on 3/5/2013); 5 minutes after the data pull began.
    That data extract in step 4 will NEVER see those records! They DO NOT EXIST when the data pull query is executed since they haven't been committed.
    Even worse, the next nights data pull will not see them either! That is because the next pull will pull data for 3/5/2013 but those records have a date of 3/4/2013. They will never get processed.
    >
    Job timing is 4am and 10pm EST
    >
    Another wrinkle is when data is inserted/updated from different timezones and the UPDATED_DATE value is from the CLIENT pc or server. Then you can get even more data missed since the client dates may be hours different than the server date used for the data pull process.
    DO NOT try to use UPDATED_DATE type columns to do delta extraction or you can have this issue.

  • Strange result for outer join with rownum

    I'm using rownum in join condition of left outer join query but i'm getting strange results.
    Query is:
    Select * from table1 left outer join table2 on table1.id = table2.id or rownum=1
    Data in table1 is
    id
    7
    8
    9
    Data in table2 is
    id
    10
    11
    12
    Result of above query in Oracle 9.2.0.1 is
    table1.id table2.id
    7 10
    7 11
    7 12
    8 10
    8 11
    8 12
    9 10
    9 11
    9 12
    Even if change is rownum related condition to like rownum >2 even than i'm getting same result.
    In case of inner join, the above condition gives results as required.
    Can anybody explain the result or is it a bug?

    could you please explain why you are using rownum.
    You may have a look at the following link explaining rownum and you should understand why you got this result, keep in mind that you are using an OR condition.
    http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/sql_elements6a.htm#4295

  • Strange Results keying out Green Screen Using Keylight

    Hi,
    I'm keying out a green screen using keylight. When I look at the view "Status" in keylight I notice a strange result that I can't seem to resolve. Inside the solid area of the matte (the actor) his pants and shoes area are filled with tiny light green dots. They seem to be causing distortion on my final render.
    No matter what adjustments I make to the matte I can't seem to get rid of these. I've attached a few small GIFs to show the issue.
    Is there anyway to remove these dots so they are "solid" within the matte or a way to color correct them inside the solid area of the matte in the final result?
    Any advise would be greatly appreciated.
    Regards,

    That's what the Despot options in the Screen Matte section are for. Alternative options include Minimax, Simple Chocker or third-party plug-ins like Re:Fill from RevisionFX. Also make good use of the various rollback options to control your Alpha levels.
    Mylenium

  • Dvd burning from idvd with strange results

    I have made a short 5 minute movie in FCP and exported it to QuickTime as I have done numerous times before. I created a menu in IDVD and then dragged QT file in. Everything looks great and plays on screen great. Then I burn the DVD. Once done I put it on TV via a different DVD player and it plays however about a minute into the video on the top of the screen I see part of another image. It almost looks like part of my G4 background screen (which is a picture) has somehow leaked through and gotten burned onto this dvd. Anyhow, I thought it was a bad DVD so burned another (TDK 8x DVD-r). Same thing happened again. Even when I put this burned DVD on my G-4 and play it I still have weird image. I went back and checked the movie again in FCP and then re-exported to QT as a self contained movie and did the whole IDVD thing all over again. Still has the weird image leaking through. By the way, before burning I did play the QT file through QT and that plays perfect! It also plays perfect through FCP. I am concerned it could be my drive. Any suggestions or hints.

    Well I discovered the problem previously posted by me concerning dvd burning with strange results. I found the exact spot in the burned dvd where the video had the other image appear along the top and then went to FCP and found the exact spot on it. Lo and behold on FCP at that exact spot in the video a "marker" had been inserted. I cleared all markers and re-exported and burned again in idvd and everything works perfectly. So apparently the marker insert in FCP caused all the problems.

  • Strange results when receiving mail sent form mail.app

    Hi all,
    I've searched these forums for an answer to this problem but I didn't find anything that seemed to fit the bill.
    I'm using the latest version of mail.app 2 with updates applied running in 10.4.3.
    I'm using Gmail as my mail server but have the same problem with other email servers I have tried.
    When I send mail to my work account (based on an exchange server) I'm getting some strange results. I'm using Windows 2000 and Outlook 2003 at work.
    When I send an (new) email with an attachment then all text that I write below the attachment in the email, when received through exchange at work, becomes an attachment its self. If this is a plain text email then the attachment is a text file, if it's a rich text email then the attachment becomes a webdocument (HTM). This is not the desired result!
    Similarly, if I reply to or forward an email, any text below new text I type into those emails becomes an attachment rather than an actual reply (with that attachment either a text file or a webdocument as stated above).
    My question therefore is how can this be corrected. It's rather annoying to have half my message cut off if I put an attachment half way through the email I am composing (I guess i could attach it to the end below all text and signature). Equally frustrating is having replied or forwarded text appear in an attachment.
    Thanks in anticipation.
    Adam
    Powerbook 12"   Mac OS X (10.4.3)  

    Hi all,
    Picture of what I describe above, thought it might help clarify what the issue is:
    Many thanks
    Adam
    Powerbook 12"   Mac OS X (10.4.3)  
    Message was edited by: adamsquire

  • SimpleDateFormat parsing difficulty

    Hello all,
    Recently, I had to parse Strings into Dates using SimpleDateFormat. The difficulty I had was because the Strings had timezone offsets. The code below shows the 3 tests it took to create a Date object of specified TimeZone.
    Test 1
    Fails because I don't set the TimeZone for SimpleDateFormat.
    Test 2
    Works for the first String because the TimeZone matches the timezone in the String.
    Test 3
    Works for all Strings, but is cumbersome because I have to parse the end of the String myself.
    My question is this: Shouldn't SimpleDateFormat parse a String directly into a Date without having you to specify the TimeZone of that Date? This problem was very annoying to solve and goes against logic (at least mine!).
    I'm interested in any thoughts on this matter. Am I being unreasonable, or is this poorly explained in the API?
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.SimpleTimeZone;
    public class DateTests {
         private static String DATE_FORMAT = "yyyyMMddHHmmss.SSSZ";
         private static String[] TEST_DATA = {
              "20020125120434.175+0800",
              "20031101195801.942+0000",
              "20041231000159.999-0536",
              "20050220165427.531-1100"
         private static int MINUTE = 60 * 1000; //in milliseconds
         private static int HOUR = 60 * MINUTE;
         public static void main(String[] args) {
              test1();
              test2();
              test3();
         private static void test1() {
              System.out.println("**** TEST 1 ****\n");
              DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
              formatter.setLenient(false); //want to check that dates are valid
              for (String dateString : TEST_DATA) {
                   try {
                        Date date = formatter.parse(dateString);
                        System.out.println("Success! The date is: "+date.toString());
                   } catch (ParseException e) {
                        System.out.println(dateString + " has error index of: " + e.getErrorOffset());
              //out of curiousity, lets see the String representation of the current date & time
              Date now = new Date();
              String currentDate = formatter.format(now);
              System.out.println("\nThe current date as a String: "+currentDate);
              System.out.println("\n");
         private static void test2() {
              System.out.println("**** TEST 2 ****\n");
              DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
              formatter.setLenient(false); //want to check that dates are valid
              //lets make the timezone +0800
              formatter.setTimeZone(new SimpleTimeZone(8 * HOUR, "GMT")); //8 hour offset
              for (String dateString : TEST_DATA) {
                   try {
                        Date date = formatter.parse(dateString);
                        System.out.println("Success! The date is: "+date.toString());
                   } catch (ParseException e) {
                        System.out.println(dateString + " has error index of: " + e.getErrorOffset());
              System.out.println("\nSuccess for the first date. Why? The timezone of the formatter matches the date.");
              System.out.println("\n");
         private static void test3() {
              System.out.println("**** TEST 3 ****\n");
              DateFormat formatter = new SimpleDateFormat(DATE_FORMAT);
              formatter.setLenient(false); //want to check that dates are valid
              for (String dateString : TEST_DATA) {
                   try {
                        //lets set a timezone for each individual date
                        int length = dateString.length();
                        int gmtMinutes = Integer.parseInt(dateString.substring(length-2, length));
                        int gmtHours = Integer.parseInt(dateString.substring(length-4, length-2));
                        int timeZone = gmtMinutes * MINUTE + gmtHours * HOUR;
                        timeZone = dateString.charAt(length-5) == '+' ? timeZone : -timeZone;
                        formatter.setTimeZone(new SimpleTimeZone(timeZone, "GMT"));
                        Date date = formatter.parse(dateString);
                        System.out.println("Success! The date is: "+date.toString());
                   } catch (ParseException e) {
                        System.out.println(dateString + " has error index of: " + e.getErrorOffset());
    }-Muel

    Date objects don't have time zones.
    This is true, my problem was that I needed to parse both the Date and the TimeZone from a String. I got misled by the SimpleDateFormat documentation (the symbol Z), and somehow got the impression that a Date should have an associated TimeZone!
    In hindsight, it is clear that Z should be used for Date strings containing a timezone and that SimpleDateFormat uses the timezone to modify the Date so that it's correct for the timezone of the current machine. If that makes sense!
    -Muel

  • STRANGER RESULT

    Hi, the code below maps some objects to a key and then buts that key in to a linked list. When I compile and run this program I get a strange result can you help me please(note that more code is involved)
    public class Subsets {
         //Vector v = new Vector();
         Properties ht = new Properties();
         LinkedList ll = new LinkedList();
         ArrayList al1, al2, al3, al4, al5, al6, al7, al8;
         String           key = null;
         String           key2;
         int          intKey;
         //Card          cd[];
    ArrayList newArr = null;
         //Card vectArray[];
         //Card cd1[], cd2[], cd3[], cd4[], cd5[], cd6[], cd7[], cd8[];
    public ArrayList permutations(Hand dk, Hand comp){
         for (int f=0; f < dk.getCardCount(); f++){
              key = String.valueOf(dk.getCard(f).getValue());
              al1 = new ArrayList();
              al1.add(dk.getCard(f));
              ll.add(ht.put(key,al1));
              for (int s=f+1; s < dk.getCardCount(); s++){
                   key = String.valueOf(dk.getCard(f).getValue()+dk.getCard(s).getValue());
                   al2 = new ArrayList();
                   al2.add(dk.getCard(f));
                   al2.add(dk.getCard(s));
                   ll.add(ht.put(key, al2));
                   //v.addElement(ht.put(key,cd2));
                   for (int t=s+1; t < dk.getCardCount(); t++){
                        key = String.valueOf(dk.getCard(f).getValue()+dk.getCard(s).getValue()+dk.getCard(t).getValue());
                        al3 = new ArrayList();
                        al3.add(dk.getCard(f));
                        al3.add(dk.getCard(s));
                        al3.add(dk.getCard(t));
                        ll.add(ht.put(key,al3));
                        //v.addElement(ht.put(key,cd3));
                        for (int a=t+1; a < dk.getCardCount(); a++){
                             key = String.valueOf(dk.getCard(f).getValue()+dk.getCard(s).getValue()+dk.getCard(t).getValue()+dk.getCard(a).getValue());
                             al4 = new ArrayList();
                             al4.add(dk.getCard(f));
                             al4.add(dk.getCard(s));
                             al4.add(dk.getCard(t));
                             al4.add(dk.getCard(a));
                             ll.add(ht.put(key,al4));
                             //v.addElement(ht.put(key,cd4));
                             for (int b=a+1; b < dk.getCardCount(); b++){
                                  key = String.valueOf(dk.getCard(f).getValue()+dk.getCard(s).getValue()+dk.getCard(t).getValue()+dk.getCard(a).getValue()+dk.getCard(b).getValue());
                                  al5 = new ArrayList();
                                  al5.add(dk.getCard(f));
                                  al5.add(dk.getCard(s));
                                  al5.add(dk.getCard(t));
                                  al5.add(dk.getCard(a));
                                  al5.add(dk.getCard(b));
                                  ll.add(ht.put(key,al5));
                                  //v.addElement(ht.put(key,cd5));
                                  for (int c=b+1; c < dk.getCardCount(); c++){
                                       key = String.valueOf(dk.getCard(f).getValue()+dk.getCard(s).getValue()+dk.getCard(t).getValue()+dk.getCard(a).getValue()+dk.getCard(b).getValue()+dk.getCard(c).getValue());
                                       al6 = new ArrayList();
                                       al6.add(dk.getCard(f));
                                       al6.add(dk.getCard(s));
                                       al6.add(dk.getCard(t));
                                       al6.add(dk.getCard(a));
                                       al6.add(dk.getCard(b));
                                       al6.add(dk.getCard(c));
                                       ll.add(ht.put(key,al6));
                                       //v.addElement(ht.put(key,cd6));
                                       for (int d=c+1; d < dk.getCardCount(); d++){
                                            key = String.valueOf(dk.getCard(f).getValue()+dk.getCard(s).getValue()+dk.getCard(t).getValue()+dk.getCard(a).getValue()+dk.getCard(b).getValue()+dk.getCard(c).getValue()+dk.getCard(d).getValue());
                                            al7 = new ArrayList();
                                            al7.add(dk.getCard(f));
                                            al7.add(dk.getCard(s));
                                            al7.add(dk.getCard(t));
                                            al7.add(dk.getCard(a));
                                            al7.add(dk.getCard(b));
                                            al7.add(dk.getCard(c));
                                            al7.add(dk.getCard(d));
                                            ll.add(ht.put(key,al7));
                                            //v.addElement(ht.put(key,cd7));
                                            for (int e=d+1; e < dk.getCardCount(); e++){
                                                 key = String.valueOf(dk.getCard(f).getValue()+dk.getCard(s).getValue()+dk.getCard(t).getValue()+dk.getCard(a).getValue()+dk.getCard(b).getValue()+dk.getCard(c).getValue()+dk.getCard(d).getValue()+dk.getCard(e).getValue());
                                                 al8 = new ArrayList();
                                                 al8.add(dk.getCard(f));
                                                 al8.add(dk.getCard(s));
                                                 al8.add(dk.getCard(t));
                                                 al8.add(dk.getCard(a));
                                                 al8.add(dk.getCard(b));
                                                 al8.add(dk.getCard(c));
                                                 al8.add(dk.getCard(d));
                                                 al8.add(dk.getCard(e));
                                                 ll.add(ht.put(key,al8));
                                                 //v.addElement(ht.put(key,cd8));
         Iterator itr = ll.iterator();
         first:{
              while(itr.hasNext()){     
    // key2 = String.valueOf(itr.next());
    //System.out.println("key2 : "+key2);
    System.out.println("size "+ll.size());
    System.out.println("next "+itr.next());
    // intKey = Integer.parseInt(key2);
                   //for(int j=comp.getCardCount()-1; j>=0;j++){
                   //     if(intKey == comp.getCard(j).getValue()){
                   //          newArr = (ArrayList)ht.get(key2);
                   //          break first;
              if(!itr.hasNext()){
                   newArr = null;
    newArr = (ArrayList)ht.get(key2);
         return newArr;
    the result that I get is as follows
    Cards on the table are:
    0. 6 of Hearts
    1. 7 of Hearts
    2. 4 of Spades
    3. Jack of Spades
    4. 7 of Spades
    Its r's turn
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next [6 of Hearts, 7 of Hearts, 4 of Spades, Jack of Spades]
    size 31
    next [6 of Hearts, 7 of Hearts, 4 of Spades]
    size 31
    next null
    size 31
    next [6 of Hearts, 7 of Hearts, Jack of Spades]
    size 31
    next [6 of Hearts, 7 of Hearts]
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next null
    size 31
    next [6 of Hearts, 4 of Spades, Jack of Spades]
    size 31
    next null
    size 31
    next null
    size 31
    next [6 of Hearts, Jack of Spades]
    size 31
    next null
    size 31
    next null
    size 31
    next [7 of Hearts, 4 of Spades, Jack of Spades]
    size 31
    next [7 of Hearts, 4 of Spades]
    size 31
    next null
    size 31
    next [7 of Hearts, Jack of Spades]
    size 31
    next [7 of Hearts]
    Exception in thread "main" java.lang.NullPointerException
    at java.util.Hashtable.get(Hashtable.java:320)
    at Subsets.permutations(Subsets.java:124)
    at PlayScopa.computerTurn(PlayScopa.java:273)
    at PlayScopa.scopaPlay(PlayScopa.java:133)
    at PlayScopa.scopaStart(PlayScopa.java:89)
    at MainApp.main(MainApp.java:29)
    [u9zuh /home/stud3/csc99/u9zuh]$
    why are there gaps here
    not the for loops are as follows
    for(){
    ......for(){
    .............for(){
    .....................etc.....

    It's telling you exactly where the problem is:
    Exception in thread "main" java.lang.NullPointerException
    at java.util.Hashtable.get(Hashtable.java:320)
    at Subsets.permutations(Subsets.java:124)
    at PlayScopa.computerTurn(PlayScopa.java:273)
    at PlayScopa.scopaPlay(PlayScopa.java:133)
    at PlayScopa.scopaStart(PlayScopa.java:89)
    at MainApp.main(MainApp.java:29)
    What code is at line 124 of Subsets?
    When you figure out what line that is (use your IDE - Control-G often lets you type in a line number) look at the variables used on that line and see which one(s) hasn't been assigned a value.

  • Java.util.text.SimpleDateFormat.parse strange behavior

    Wow !
    if I parse "10/14/2002" I get "0/2/2003", that is, the month 14 is considered 12 (december) + 2 additional months and therefore february in the next year!!
    any idea ?
    Paolo Denti
    =============================
    public class Test {
    public static void main(String[] args) {
    java.util.Date testDate = null;
    java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat("dd-MM-yyyy");
    try {
    testDate = formatter.parse("10-14-2002");
    catch (java.text.ParseException e) {
    System.out.println("Data scassata: " + e.getMessage());
    System.exit(1);
    System.out.println(testDate.toString());
    =================================
    prints "Mon Feb 10 00:00:00 CET 2003"

    Tryformatter.setLenient(false);if you do not want this behaviour.

Maybe you are looking for

  • Transferring from one iPhoto library to another

    How do I import photos from an older iPhoto library to a new one, without creating duplicates? If I import the old iPhoto library folder, I end up with duplicates (both the modified photos and the originals). If I import just the folder for modified

  • How do I scan multiple pages into one document?

    How do I scan multiple pages into one document? HP Photosmart 5514-e-All-in-One Printer B111h Model CQ 183 A

  • Specify card type error in Bdocs

    Hi, We need to download customers from ECC to CRM , when executed , there is no error captured in SMQ2. But the BDocs are generated in  SMW01 and found  R1561 error with error u2018Specify a card typeu2019. Can anyone suggest what needs to be done to

  • Provide a count of different columns

    I have the need to count two columns using two tables. table1 looks like: id itemid itemid2 count_item count_item2 1 123 45 3 null 2 425 46 3 null table2 looks like: kID itemid history 1 123 week1 2 123 week2 3 123 week3 4 425 week1 5 425 week2 6 425

  • Match bank statement lines across mutliple operating units

    Hello, We need the ability to reconcile bank statement lines from a single bank account with transactions across multiple operating units. Any ideas how I can do this in Oracle R12? Thanks for your help.